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

24 浏览
0 Comments

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

我正在尝试创建一个简单的正则表达式,来检查一行是否为空白的。\n案例:\n

"    some"   // 不为空白
"   " // 空白
"" // 空白

0
0 Comments

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

解决方法是使用以下正则表达式:

^\s*$

需要注意的是,\s也会匹配换行符,所以在包含连续空行的字符串中,无法“找到”单独的空行。

0
0 Comments

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

在多行模式下,一个更正确的答案是:

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

接受的答案:`^\s*$` 不适用于最后一行为空的情况(在多行模式下)。

编辑:在开头添加了一个 `^`,以捕获以 `*/` 结尾并跟随一个换行符的情况。谢谢 John Henry。

确切地说,我确认了这个情况。接受的答案在我的文件中漏掉了许多空行,但这个答案捕获了它们所有。两个正则表达式的并集可以捕获每种情况。

这个答案在像 Notepad++ 这样的工具中完美地运行。接受的答案匹配多个空行,但不匹配单个空行。

接受的答案在我的情况下(多行)确实有效。这个答案也有效。

所选择的答案不适用于删除空行。这个答案适用于删除空行,所以对我来说,这个答案是最好的。

在这个其他答案中还有一个小的修复(如果你有以 `*/`(注释结束)结尾并跟随一个空行的情况)。

0
0 Comments

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

问题描述:

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

解决方法:

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

^\s*$

解释:

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

在多行模式下,^$也匹配行的开始和结束。

参考文献:


非正则表达式的替代方法:

你还可以通过对字符串line进行trim()操作,然后检查结果字符串isEmpty()来判断给定的字符串line是否为空(即只包含空格)。

在Java中,可以这样做:

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

正则表达式的解决方法也可以简化,不需要使用锚点(因为在Java中matches如何定义):

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

API参考:

请注意Marcelo的答案中Bart的评论;根据你想如何处理多个空行,模式可能会略有不同。

这是错误的。当行尾是"\r\n"时,它只找到一个单独的换行符,而不是空行"\r\n\r\n"。

请注意,^\s*$无法检测到字符串中的所有空行,因为\s*也会匹配\n,所以连续的空行会被视为一个匹配。而^\s*?$将匹配每一行的空行。

0