我正在尝试制作简单的正则表达式,以检查行是否为空。
案例;
" some" // not blank
" " //blank
"" // blank
答案 0 :(得分:269)
您想要的模式在多线模式下是这样的:
^\s*$
说明:
^
是字符串锚点的开头。$
是字符串锚点的结尾。\s
是空格字符类。*
是零次或多次重复。在多行模式下,^
和$
也会匹配行的开头和结尾。
您还可以通过line
检查给定字符串trim()
是否为“空白”(即仅包含空格),然后检查结果字符串isEmpty()
。
在Java中,这将是这样的:
if (line.trim().isEmpty()) {
// line is "blank"
}
正则表达式解决方案也可以在没有锚点的情况下简化(因为Java中定义了matches
的方式),如下所示:
if (line.matches("\\s*")) {
// line is "blank"
}
String String.trim()
boolean String.isEmpty()
true
为length()
时才返回0
。 boolean String.matches(String regex)
答案 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占用任何空格,直到下一个字符串
希望有所帮助