我正在使用Perl正则表达式。 我将如何忽略空格并仍然执行测试以查看字符串是否匹配。 例如。
$var = " hello "; #I want var to igonore whitespace and still match
if($var =~ m/hello/)
{
}
答案 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 $ /