PHP 正規表現でエスケープが必要な文字

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

分かってはいるのだけど、毎回忘れてしまう。。

そしてWEB検索、、

面倒なので自分のブログにも記事にしておくことにしました。

正規表現のエスケープとは

いわゆるメタ文字です。


メタ文字
正規表現の強力さは、パターン中に選択肢や繰り返しを記述できることに あります。選択肢や繰り返しは、メタ文字 (meta-character) を使ってパターン中に記述します。メタ文字は、 その文字自体を表わさず、代わって特別な解釈が行われます。
メタ文字には、2 種類あります。ひとつは、角カッコ内を除き、 パターン中のどこででも使用できる文字です。もうひとつは、 角カッコで括られた中でだけ使用できる文字です。

http://php.net/manual/ja/regexp.reference.meta.php

特殊な役割を持つため、正規表現の検索文字として使用する場合はメタ文字ではないことを示すためにバックスラッシュを使用してエスケープします。

メタ文字理由
\多目的に使う一般的なエスケープ文字
^検索対象(複数行モードでは行)の始まりを言明
$検索対象の終わりあるいは終端の改行文字の前(複数行モードでは行の終わり)を言明
.改行を除くすべての文字にマッチ(デフォルト時)
[文字クラス定義の開始
]文字クラス定義の終了
|選択枝の開始
(サブパターンの開始
)サブパターンの終了
?( の意味を拡張/0 または 1 回マッチ/なるべく少ない回数だけマッチ (繰り返し を参照)
*0 回以上の繰り返し
+1 回以上の繰り返し
{最小/最大を指定する量指定子の開始
}最小/最大を指定する量指定子の終了

参考URL:http://php.net/manual/ja/regexp.reference.meta.php

理由はともかく、エスケープが必要なメタ文字は以下。

\^$.[]|()?*+{}

それぞれのメタ文字の使い方パターン等は別にまとめる予定。