2

我想在 Perl 中的匹配正则 r 表达式中包含一个变量,并检查该变量是否不在字符串中。

此处的链接说明了如何包含变量,但如果变量不匹配,我很难测试。当然,我可以像这样否定 if 条件:

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

但我确信在正则表达式匹配中必须有一种方法。有任何想法吗?

提前谢谢你的帮助。

4

2 回答 2

8

使用!~运算符。

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

或者index完全使用并避免使用正则表达式引擎。即使$Myvar有正则表达式引擎特别对待的字符,这也将起作用。

if ( index($string, $Myvar) < 0 ) {
# Do some code here
}
于 2012-06-13T19:57:32.087 回答
2

否定结果有什么问题?

“负匹配”(需要负前瞻断言)使您的正则表达式更加复杂:

if ($string =~ m/^(?!.*$Myvar)/s) {
    # Do some code here
}
于 2012-06-13T19:58:30.107 回答