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

sf6xfgos  于 2022-12-14  发布在  其他
关注(0)|答案(9)|浏览(328)

我试图使简单的正则表达式,将检查是否一行是空白或没有。
案;

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

dpiehjr41#

在多行模式下,您需要的图案如下所示:

^\s*$

说明:

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

在多行模式中,^$也会与行的开头和结尾相符。

参考:

非正则表达式替代项:

你也可以检查一个给定的字符串line是否为“空白”(即只包含空格),方法是对它进行trim()-ing,然后检查结果字符串isEmpty()是否为“空白”。
在Java中,这类似于:

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

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

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

API参考

  • String String.trim()
  • 返回字符串的副本,省略前导空格和尾随空格。
  • boolean String.isEmpty()
  • 当且仅当length()0时,返回true
  • x1米15英寸
  • 指出此**(整个)**字符串是否与给定的正则表达式匹配。
bpzcxfmw

bpzcxfmw2#

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

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

公认答案:^\s*$与最后一行为空时的方案不匹配(在多行模式下)。

lf5gs5x2

lf5gs5x23#

试试这个:

^\s*$
klr1opcd

klr1opcd4#

这个answer完全归功于bchr02。但是,我不得不稍微修改它,以捕捉*/(注解结束)后跟空行的情况。正则表达式将非空行与*/匹配。
新增:(^(\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm
我所做的就是添加^作为第二个字符,以表示行的开始。

aor9mmx1

aor9mmx15#

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

i7uq4tfw

i7uq4tfw6#

这里空白的意思就是你的意思。
一行包含满空格或一行不包含任何内容。
如果要匹配不包含任何内容的行,请使用“/^$/”。

lo8azlld

lo8azlld7#

当我的字符串中只填充了空格,有时候字符串没有内容(只有行终止符)时,这里的答案都不起作用,所以我用了这个:

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

rkttyhzu8#

嗯...我修修补补(使用notepadd++),这是我找到的解决方案
\n\s
\n表示行尾(开始匹配的位置)--在我的情况下,插入符号没有帮助,因为行的开头是一个字符串\s在下一个字符串之前占用任何空格
希望能有所帮助

u4vypkhs

u4vypkhs9#

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

\n\s*

相关问题