正規表現のメタ文字のエスケープ
正規表現でパターンマッチさせる時に、どの文字をエスケープするか、しないかが、分からなくなることがありますね。
エスケープする文字をメタ文字といい、各々以下の意味があり、その文字自体にマッチさせるには、前に『\』を添えます。
- . - 改行を除く任意の1文字
- * - 直前の文字を0回以上にマッチ
- + - 直前の文字を1回以上にマッチ
- ? - 直前の文字を0又は1回にマッチ
- ^ - 行の先頭にマッチ
- $ - 行の後尾にマッチ
- \ - 直後の文字をエスケープ
- | - パターンの論理和
- () - パターンのグループ化
- {} - 量指定子
- [] - 文字クラス
$string = '.*+?^$\|(){}'; $string =~ s/\*\.\+\?\^\$\\\|\(\)\{\}/match/; print $string, "\n"; # match表示
ちなみに、以下の文字はエスケープ不要です。
$string = "\"',#%&!=~"; $string =~ s/"',#%&!=~/match/; print $string, "\n"; # match表示