いわゆる「メタ文字」を普通の文字として使うために「エスケープ処理」を行いますが、何が「メタ文字」なのか知っとかないといけない。のでメモしておく。
正規表現自体、そこまで自信があるわけではない頃に、メタ文字のせいで意図していない結果になった時になぜ意図した結果にならないのか調べるのに時間がかかったことがあった。
ちゃんと、覚えよう
エスケープ処理が必要な文字・記号 | 処理後 | 備考 |
---|---|---|
\ | \ \ | |
* | \ * | |
+ | \ + | |
. | \ . | |
? | \ ? | |
{ } | \ { \ } | |
( ) | \ ( \ ) |
エスケープしないと後方参照、もしくはグループ化 |
[ ] | \ [ \ ] | |
^ | \ ^ | 行頭の指定 |
$ | \ $ | 行末の指定 |
– | \ – | [ ]の中に書く場合のみ処理が必要 |
| | \ | | |
/ | \ / |
例外
文字クラス[ ]の中では、エスケープ処理が不要な物がある
原則として、文字クラス[ ]
の中に限り、以下の4つの記号だけが「メタ文字」として扱われる
-
(ハイフン)^
(山形記号)]
(閉じ大かっこ)/
(バックスラッシュ)
ただし、上の中でバックスラッシュ\
と他の3つのメタキャラクタは挙動が異なる
バックスラッシュ\
だけは絶対的なメタ文字であり、自分自身を含む直後の文字は何でもエスケープする。逆に、マイナスハイフン: -
、山形記号: ^
、閉じ角かっこ: ]
の3つは、文字クラス[ ]
内では相対的なメタ文字です。