如何使用正则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
希望它有帮助