如何在Perl中的匹配正则表达式中包含变量,并检查变量是否在字符串中?

时间:2012-06-13 19:56:06

标签: regex string perl variables match

我想在Perl的匹配常规rexpression中包含一个变量,并检查变量是否在字符串中。

链接here指示如何包含变量,但是如果变量不匹配,我将难以测试。当然,我可以像这样否定if条件:

if (!($string =~ m/$Myvar/)) {
# Do some code here
}

但我确信在正则表达式匹配中必须有办法。 有什么想法吗?

提前感谢您的帮助。

2 个答案:

答案 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
}