Answers:
在多行模式下,您想要的模式是这样的:
^\s*$
说明:
^ 是字符串锚点的开始。$ 是字符串锚点的结尾。\s 是空白字符类。* 是零个或多个重复。在多行模式,^并且$还搭配开始和该行的结束。
您还可以line通过trim()-ing来检查给定字符串是否为“空白”(即仅包含空格),然后检查结果字符串是否为isEmpty()。
在Java中,这将是这样的:
if (line.trim().isEmpty()) {
// line is "blank"
}
正则表达式解决方案还可以简化,而无需使用锚(由于matchesJava中的定义方式),如下所示:
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的解决方案。后者会真正符合要求,您可以检查并查看其中的区别。我建议您编辑答案以更清楚地了解建议的内容,以便读者可以从中获取更多价值它。