我试图使简单的正则表达式,将检查一行是否为空白。
情况;
" some" // not blank
" " //blank
"" // blank
我试图使简单的正则表达式,将检查一行是否为空白。
情况;
" some" // not blank
" " //blank
"" // blank
你想要的模式在多行模式下是这样的:
^\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。 布尔值的字符串。正则表达式匹配(字符串) 告诉这个(整个)字符串是否匹配给定的正则表达式。
实际上,在多行模式下,更正确的答案是:
/((\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 *美元/通用
我所做的只是添加^作为第二个字符来表示行开始。
不知何故,这里的答案都不适合我,当我有字符串填充只是空格,偶尔字符串没有内容(只是行结束符),所以我用这个代替:
if (str.trim().isEmpty()) {
doSomethingWhenWhiteSpace();
}