我试图使简单的正则表达式,将检查一行是否为空白。

情况;

"    some"   // not blank
"   " //blank
"" // blank

试试这个:

^\s*$

最可移植的正则表达式是^[\t\n]*$来匹配空字符串(注意,您需要相应地用制表符和换行符替换\t和\n)和[^ \n\t]来匹配非空白字符串。


你想要的模式在多行模式下是这样的:

^\s*$

解释:

^是弦锚的开始。 $是字符串锚的结束。 \s是空白字符类。 *是零或多次重复。

在多行模式下,^和$也匹配行首和行尾。

引用:

regular-expressions.info/Anchors,字符类和重复。


一个非正则表达式的替代方案:

你也可以检查给定的字符串行是否为“空白”(即只包含空白),通过trim()-ing它,然后检查结果字符串是否为empty()。

在Java中,这可能是这样的:

if (line.trim().isEmpty()) {
    // line is "blank"
}

regex解决方案也可以在没有锚的情况下简化(因为Java中如何定义匹配),如下所示:

if (line.matches("\\s*")) {
    // line is "blank"
}

火参考文献

字符串String.trim () 返回字符串的副本,省略前导和尾随空格。 布尔String.isEmpty () 当且仅当length()为0时返回true。 布尔值的字符串。正则表达式匹配(字符串) 告诉这个(整个)字符串是否匹配给定的正则表达式。


在这里,Blank的意思就是你想表达的意思。 一行包含满空格或一行不包含任何内容。 如果你想匹配不包含任何内容的行,那么使用'/^$/'。


实际上,在多行模式下,更正确的答案是:

/((\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm

接受的答案:^\s*$不匹配最后一行为空的场景(在多行模式下)。


嗯…我摆弄了一下(使用notepadd++),这就是我找到的解决方案

\n\s

\n表示行结束(从哪里开始匹配)——在我的情况下,插入符号不会有帮助,因为行开始是一个字符串 \s占用下一个字符串之前的任何空格

希望能有所帮助


这个答案完全归功于bchr02。但是,我必须稍微修改它,以捕捉带有*/(注释结束)的行后面跟着空行的场景。正则表达式用*/匹配非空行。

新:(^ (\ r \ n \ n | | \ r) $) | (^ (\ r \ n \ n | | \ r)) | ^ \ s *美元/通用

我所做的只是添加^作为第二个字符来表示行开始。


这个正则表达式将从文件中删除所有空格(空白)、空行和空制表符

\n\s*

不知何故,这里的答案都不适合我,当我有字符串填充只是空格,偶尔字符串没有内容(只是行结束符),所以我用这个代替:

if (str.trim().isEmpty()) {
    doSomethingWhenWhiteSpace();
}