プログラムがさっぱりな人でも正規表現を理解しておこう
スパム対策や、PHPの修正などをしていると、どうしても正規表現で記述する必要が出てきます。
正規表現とは簡単に言えば「文字のパターンを表す表現」のことです。
たとえば「あ~ん、までの全ての文字」という指定をする場合
「あいうえ…」と1文字ずつ書くのは大変です。
そこで正規表現を使うと、「あ-ん」と書くだけで同じ意味を持ちます。
そうした文字のパターンを表現するのに使われるのが特殊文字である「メタ文字」です。
多くの方がつまづくのが「メタ文字」の扱いだと思います。
「メタ文字」とは具体的には
. ^ $ [ ] * + ? | ( )
などの文字です。
それぞれ
メタ文字 | 読み方 | 意味 |
---|---|---|
. | ピリオド、ドット | 任意の一文字 |
^ | キャレット | 先頭 |
$ | ダラー、ドルマーク | 末尾 |
[] | スクエアブラケット開、スクエアブラケット閉 | []内のいずれか1文字 |
* | アスタリスク | 0回以上の繰り返し |
+ | プラス | 1回以上の繰り返し |
? | クエスチョンマーク | 0回または1回の繰り返し |
| | バー | OR |
() | バーレン開、バーレン閉 | グループ |
という意味を持っています。
例えば正規表現を求められる場で「oxynotes.com」と入力するとエラーが出ます。
「任意の一文字」を表す「.(ドット)」が使われている為です。
そこで登場するのが
メタ文字 | 読み方 | 意味 |
---|---|---|
¥ | バックスラッシュ、円マーク | エスケープ |
¥の次にくる特殊文字をプレーン文字(ようはテキストデータ)として扱ってくれるメタ文字です。
つまり「oxynotes.com/hoge」を正規表現で表すには「oxynotes¥.com¥/hoge」と入力すれば問題なく動作します。
また区切りに使われる文字もエスケープする必要があります。例えば「/(スラッシュ)」です。「/から/で囲んだパターンでマッチさせる」という書式の場合URLなどスラッシュ含む文字をマッチさせるには「¥/」とする必要があります。