Perl プログラミングにおいて、Shift_JISで記載された日本語を含む正規表現を、エラーにならないようにエスケープする方法を紹介します。EUCの場合でも正規表現上の特殊文字を一括でエスケープするのに使用できます。
正規表現エスケープ用関数
sub esc4re{
my $str = shift;
$str =~ s/([\x21\x24-\x26\x28-\x2b\x2e\x2f\x3f\x40\x5b-\x5e\x7b-\x7d])/\\$1/g if $str;
return $str;
}
my $str = shift;
$str =~ s/([\x21\x24-\x26\x28-\x2b\x2e\x2f\x3f\x40\x5b-\x5e\x7b-\x7d])/\\$1/g if $str;
return $str;
}
使用例
my ($teststr, $restr);
$teststr = 'メール';
$restr = &esc4re($teststr);
print "$teststr MATCHED\n" if $teststr =~ /$restr/;