我正在尝试制作一个简单的正则表达式来检查一行是否为空.
案件;
" some" // not blank
" " //blank
"" // blank
Run Code Online (Sandbox Code Playgroud)
pol*_*nts 305
你想要的模式在多线模式下是这样的:
^\s*$
Run Code Online (Sandbox Code Playgroud)
说明:
^ 是字符串锚点的开头.$ 是字符串锚的结束.\s 是空白字符类.* 是零或多重复.在多行模式,^而且$还匹配行的开头和结尾.
您还可以line通过trim()-ing 检查给定字符串是否为"空白"(即仅包含空格),然后检查结果字符串isEmpty().
在Java中,这将是这样的:
if (line.trim().isEmpty()) {
// line is "blank"
}
Run Code Online (Sandbox Code Playgroud)
正则表达式解决方案也可以简化而无需锚点(因为matches在Java中定义的方式)如下:
if (line.matches("\\s*")) {
// line is "blank"
}
Run Code Online (Sandbox Code Playgroud)
String String.trim()
boolean String.isEmpty()
true当且仅当length()是,返回0.boolean String.matches(String regex)
小智 44
实际上在多线模式下,更正确的答案是:
/((\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm
Run Code Online (Sandbox Code Playgroud)
接受的答案:^\s*$与最后一行为空白时的情况不匹配(在多线模式下).
试试这个:
^\s*$
Run Code Online (Sandbox Code Playgroud)