正規表現文字列のエスケープは quotemeta
問題
Perlで正規表現を使っていたら、エラーが発生した。
Unmatched ) in regex; marked by <-- HERE in m/a) <-- HERE {2}/ at perl.pl line 123.
答え
エスケープしましょう。
my $match = "a)hogehoge";
をそのまま if ($message =~ /$match/) { … } などに使っていたら、
$match = quotemeta $match;
してから使う。
phpの場合なら quotemeta() という関数で。
コメント