2

Perl で一致する正規表現に変数を含め、変数が文字列に含まれていないかどうかを確認したいと思います。

ここのリンクは、変数を含める方法を示していますが、変数が一致しないかどうかをテストするのが困難です。もちろん、次のように 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 に答える