如何检查一行是否为空白使用正则表达式

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

情况;

"    some"   // not blank
"   " //blank
"" // blank
344982 次浏览

试试这个:

^\s*$

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

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

^\s*$

解释:

  • ^是string anchor的开头。
  • $是字符串锚的结束。
  • \s是空白字符类。
  • *是0或多个重复。

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

引用:


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

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

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

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

正则表达式解决方案也可以在没有锚的情况下简化(因为Java中matches是如何定义的),如下所示:

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

API参考

这里的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

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

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

\n\s*

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

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