小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

正規表現のメタ文字のエスケープ

正規表現でパターンマッチさせる時に、どの文字をエスケープするか、しないかが、分からなくなることがありますね。
エスケープする文字をメタ文字といい、各々以下の意味があり、その文字自体にマッチさせるには、前に『\』を添えます。

  • . - 改行を除く任意の1文字
  • * - 直前の文字を0回以上にマッチ
  • + - 直前の文字を1回以上にマッチ
  • ? - 直前の文字を0又は1回にマッチ
  • ^ - 行の先頭にマッチ
  • $ - 行の後尾にマッチ
  • \ - 直後の文字をエスケープ
  • | - パターンの論理和
  • () - パターンのグループ化
  • {} - 量指定子
  • [] - 文字クラス
$string = '.*+?^$\|(){}';
$string =~ s/\*\.\+\?\^\$\\\|\(\)\{\}/match/;
print $string, "\n"; # match表示

ちなみに、以下の文字はエスケープ不要です。

$string = "\"',#%&!=~";
$string =~ s/"',#%&!=~/match/;
print $string, "\n"; # match表示