2011-05-24 32 views

回答

16
if($string=~/^\s*$/){ 
    #is 100% whitespace (remember 100% of the empty string is also whitespace) 
    #use /^\s+$/ if you want to exclude the empty string 
} 
+0

请注意,Perl有匹配运算符的默认标志,所以有人可能已经设置/范围内的'/ m'选项。这意味着'^'和'$'匹配行的开始或结尾,这允许在锚点之前和之后的文本。为避免这种情况,请使用字符串锚的开始和结尾:'/ \ A \ s * \ z /'。 – 2016-06-20 20:44:34

1

您的正则表达式应该查找^ \ s + $。它将需要至少一个空白。

如果您想知道,“空格被定义为[\ t \ n \ f \ r \ p {Z}]”。请参阅http://userguide.icu-project.org/strings/regexp

\t Match a HORIZONTAL TABULATION, \u0009. 
\n Match a LINE FEED, \u000A. 
\f Match a FORM FEED, \u000C. 
\r Match a CARRIAGE RETURN, \u000D. 
\p{UNICODE PROPERTY NAME} Match any character with the specified Unicode Property. 
+0

请注意,Perl具有匹配运算符的默认标志,所以有人可能会在范围内的其他位置设置'/ m'选项。这意味着'^'和'$'匹配行的开始或结尾,这允许在锚点之前和之后的文本。为避免这种情况,请使用字符串锚的开始和结尾:'/ \ A \ s * \ z /'。 – 2016-06-20 20:45:21

+0

另外,请参阅[perlrecharclass](http://perldoc.perl.org/perlrecharclass.html)了解Perl的空白定义。 – 2016-06-20 20:50:07

9

(我已决定编辑自己的帖子,包括在下面的谈话tobyodavies概念。)

在大多数情况下,你要确定的东西是否是空白的,因为空白是相对不重要并且您想跳过仅由空白组成的字符串。所以,我认为你想确定是否有重要的人物。

所以我倾向于使用反向测试:$str =~ /\S/。确定谓词“字符串包含一个S重要字符”。

但是,应用特定的问题,这可以在负的测试确定:$str !~ /\S/

+1

+1:好想法。 – 2011-05-24 05:02:06

+3

完全取决于您是否要匹配“”。 – ysth 2011-05-24 05:05:57

+1

不是一个双重负面的粉丝 - 不*包含*非*空白......不确定这个,但绝对是一个解决问题的有趣方式! – tobyodavies 2011-05-24 05:07:37

-2

如果要检查给定String它是否只包含空格字符或不在正则表达式...

String given_string=" \t "; //add spaces and tabs any white space character 
System.out.println(given_string.matches("^\\s+$")); 

它会检查从字符串的开头至少一个空白字符开始,直到它的结束,如果任何非空白字符时,它会返回false.it适用于空的情况下,新线路的情况下也(^ _ ^)

相关问题