我试图使简单的正则表达式,将检查一行是否为空白。
情况;
" some" // not blank " " //blank "" // blank
试试这个:
^\s*$
最可移植的正则表达式是^[ \t\n]*$来匹配空字符串(注意,你需要相应地用制表符和换行符替换\t和\n)和[^ \n\t]来匹配非空格字符串。
^[ \t\n]*$
\t
\n
[^ \n\t]
你想要的模式在多行模式下是这样的:
解释:
^
$
\s
*
在多行模式下,^和$也匹配行首和行尾。
你也可以通过trim()-ing来检查给定的字符串line是否为“空白”(即只包含空格),然后检查结果字符串isEmpty(). 0是否为“空白”。
trim()
line
isEmpty()
在Java中,这可能是这样的:
if (line.trim().isEmpty()) { // line is "blank" }
正则表达式解决方案也可以在没有锚的情况下简化(因为Java中matches是如何定义的),如下所示:
matches
if (line.matches("\\s*")) { // line is "blank" }
String String.trim()
boolean String.isEmpty()
length()
0
true
boolean String.matches(String regex)
这里的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*$/gm
(^(\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm
我所做的只是添加^作为第二个字符来表示行开始。
这个正则表达式将从文件中删除所有空格(空白)、空行和空制表符
\n\s*
不知何故,这里的答案都不适合我,当我有字符串填充只是空格,偶尔字符串没有内容(只是行结束符),所以我用这个代替:
if (str.trim().isEmpty()) { doSomethingWhenWhiteSpace(); }