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

时间:2010-06-10 08:28:41

标签: regex

我正在尝试制作简单的正则表达式,以检查行是否为空。

案例;

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

7 个答案:

答案 0 :(得分:269)

您想要的模式在多线模式下是这样的:

^\s*$

说明:

  • ^是字符串锚点的开头。
  • $是字符串锚点的结尾。
  • \s是空格字符类。
  • *是零次或多次重复。

在多行模式下,^$也会匹配行的开头和结尾。

参考文献:


非正则表达式替代方案:

您还可以通过line检查给定字符串trim()是否为“空白”(即仅包含空格),然后检查结果字符串isEmpty()

在Java中,这将是这样的:

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

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

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

API参考

答案 1 :(得分:31)

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

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

接受的答案:^\s*$与最后一行为空白时的情况不匹配(在多线模式下)。

答案 2 :(得分:8)

试试这个:

^\s*$

答案 3 :(得分:5)

最便携的正则表达式^[ \t\n]*$与空字符串匹配(请注意,您需要使用制表符和换行符替换\t\n)和[^ \n\t]匹配非空白字符串。

答案 4 :(得分:3)

这里空白表示你的意思。
一行包含大量空格或一行不包含任何内容 如果你想匹配一个什么都不包含的行,那么使用'/ ^ $ /'。

答案 5 :(得分:2)

answer完全归功于 bchr02 。但是,我必须稍微修改它以捕获具有*/(注释结束)后跟空行的行的方案。正则表达式将非空行与*/匹配。

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

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

答案 6 :(得分:0)

嗯......我修补了(使用notepadd ++),这是我找到的解决方案

\ n \ S

\ n为行尾(你开始匹配的地方) - 在我的情况下,插入符号没有帮助,因为行的开头是一个字符串 \ s占用任何空格,直到下一个字符串

希望有所帮助