Answers:
在多行模式下,您想要的模式是这样的:
^\s*$
说明:
^
是字符串锚点的开始。$
是字符串锚点的结尾。\s
是空白字符类。*
是零个或多个重复。在多行模式,^
并且$
还搭配开始和该行的结束。
您还可以line
通过trim()
-ing来检查给定字符串是否为“空白”(即仅包含空格),然后检查结果字符串是否为isEmpty()
。
在Java中,这将是这样的:
if (line.trim().isEmpty()) {
// line is "blank"
}
正则表达式解决方案还可以简化,而无需使用锚(由于matches
Java中的定义方式),如下所示:
if (line.matches("\\s*")) {
// line is "blank"
}
String String.trim()
boolean String.isEmpty()
true
,当且仅当,length()
是0
。boolean String.matches(String regex)
if line.strip():
由于一个空字符串的求值为False
实际上,在多行模式下,更正确的答案是:
/((\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm
可接受的答案:^\s*$
当最后一行为空白时(在多行模式下),与方案不匹配。
最可移植的正则表达式将^[ \t\n]*$
匹配一个空字符串(请注意,您将需要替换\t
并相应地\n
使用tab和newline)并[^ \n\t]
匹配一个非空白字符串。
[ \t]
\r
以便使用正则表达式^[ \t\r\n]*$
。但是^\s*$
更好-更简洁。如果您不想匹配换行符,则可以使用\h
(意思是水平空格),例如^\h*$
嗯...我四处摸索(使用notepadd ++),这是我找到的解决方案
\ n \ s
\ n为行尾(您开始匹配的位置)-在我的情况下,插入符号将无济于事,因为行的开头是字符串\ s占用任何空格,直到下一个字符串
希望能帮助到你
test_vec <- c(" some"," ","")
。您的解决方案:grepl("\\n\\s",test_vec) # [1] FALSE FALSE FALSE
,投票解决方案:grepl("^\\s*$",test_vec) # [1] FALSE TRUE TRUE
。经过投票的解决方案可以提供预期的结果,而您的则不能。
ctrl+f
用notepad ++吗?在这种情况下,您可以通过选择“扩展”搜索模式并搜索“ \ n \ s”来找到(尽管不是真正匹配)空白行,如果选择“正则表达式”,则字符串将匹配该行,并且可以也可以尝试@polygenelubricants的解决方案。后者会真正符合要求,您可以检查并查看其中的区别。我建议您编辑答案以更清楚地了解建议的内容,以便读者可以从中获取更多价值它。