正規表現文字列のエスケープは quotemeta
2011/09/22
develop
問題
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() という関数で。
コメント