用正则表达式忽略空格(perl)

时间:2010-04-04 02:02:12

标签: regex perl

我正在使用Perl正则表达式。 我将如何忽略空格并仍然执行测试以查看字符串是否匹配。 例如。

$var = "         hello     ";     #I want var to igonore whitespace and still match
if($var =~ m/hello/)
{



} 

4 个答案:

答案 0 :(得分:9)

你在那里应该匹配得很好。正则表达式将匹配模式hello的任何出现,所以只要它在$ var中看到“hello”就会匹配

另一方面,如果你想严格忽略你忽略的东西,你应该从头到尾锚定你的字符串

if($var =~ m/^\s*hello\s*$/) {
}

如果您的模式中有多个单词

if($var =~ m/^\s*hello\s+world\s*$/) {
}

\ s *匹配0或更多空格,\ s +匹配1个或更多空格。 ^匹配一行的开头,$匹配一行的结尾。

答案 1 :(得分:1)

正如其他人所说,Perl匹配字符串中的任何位置,而不是整个字符串。我刚开始时发现这令人困惑,我仍然被抓住了。我试着教自己思考是否需要查看行/整个字符串的开头等。

另一个有用的提示是使用\b。这样可以查找单词分隔符/ \ bbook \ b / matches

"book. "
"book "
"-book"

但不是

"booking"
"ebook"

答案 2 :(得分:1)

这个正则表达式有点无关,但是如果你想在将它传递给if之前连接字符串中的所有空格。

s/[\h\v]+/ /g;

答案 3 :(得分:0)

/ ^ \ S 你好\ S $ /