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

我试图做简单的正则expression式,将检查一行是否是空白的。

案件;

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

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

 ^\s*$ 

说明:

  • ^是string锚的开始。
  • $是string锚的结尾。
  • \s是空格字符类。
  • *是零或更多的重复。

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

参考文献:

  • regular-expressions.info/Anchors,Character Classes和Repetition 。

一个非正则expression式的替代方法:

您也可以通过trim()来检查给定的stringline是否为“空白”(即仅包含空格),然后检查结果string是否为空isEmpty()

在Java中,这将是这样的:

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

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

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

API参考

  • String String.trim()
    • 返回string的副本,省略前导和尾随空白。
  • boolean String.isEmpty()
    • 当且仅当length()0返回true
  • boolean String.matches(String regex)
    • 判断这个(整个)string是否与给定的正则expression式匹配。

其实在多线模式下更正确的答案是:

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

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

尝试这个:

 ^\s*$ 

最便携的正则expression式是^[ \t\n]*$匹配一个空string(注意,您需要用tab和换行符replace\t\n )和[^ \n\t]非空白string。

这里空白的意思是你的意思。
一行包含完整的空格或一行不包含任何内容。
如果你想匹配一个不包含任何内容的行,可以使用'/ ^ $ /'。

充分感谢bchr02这个答案 。 但是,我不得不稍微修改一下,以获得具有*/ (结束注释)后面跟着一个空行的行。 正则expression式匹配非空行与*/

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

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

那么…我修饰(使用notepad ++),这是我find的解决scheme

\ n \ S

\ n为行尾(在哪里你开始匹配) – 插入符号将不会在我的情况下,因为行的开始是一个string\ s需要任何空间,直到下一个string

希望它有帮助