我想在Perl的匹配常规rexpression中包含一个变量,并检查变量是否在字符串中。
链接here指示如何包含变量,但是如果变量不匹配,我将难以测试。当然,我可以像这样否定if条件:
if (!($string =~ m/$Myvar/)) {
# Do some code here
}
但我确信在正则表达式匹配中必须有办法。 有什么想法吗?
提前感谢您的帮助。
答案 0 :(得分:8)
使用!~
运算符。
if ($string !~ m/$Myvar/) {
# Do some code here
}
或者使用index
并完全避免使用正则表达式引擎。即使$Myvar
具有正则表达式引擎专门处理的字符,这也会有效。
if ( index($string, $Myvar) < 0 ) {
# Do some code here
}
答案 1 :(得分:2)
否定结果有什么问题?
“否定匹配”(需要否定lookahead assertion)会使您的正则表达式更加复杂:
if ($string =~ m/^(?!.*$Myvar)/s) {
# Do some code here
}