OXY NOTES

正規表現でURLやUSER_AGENTを書く際の注意

プログラムがさっぱりな人でも正規表現を理解しておこう

スパム対策や、PHPの修正などをしていると、どうしても正規表現で記述する必要が出てきます。
正規表現とは簡単に言えば「文字のパターンを表す表現」のことです。
たとえば「あ~ん、までの全ての文字」という指定をする場合
あいうえ…」と1文字ずつ書くのは大変です。
そこで正規表現を使うと、「あ-ん」と書くだけで同じ意味を持ちます。

そうした文字のパターンを表現するのに使われるのが特殊文字である「メタ文字」です。
多くの方がつまづくのが「メタ文字」の扱いだと思います。

メタ文字」とは具体的には

.   ^   $   [   ]   *   +   ?   |   (   )

などの文字です。

それぞれ

メタ文字 読み方 意味
. ピリオド、ドット 任意の一文字
^ キャレット 先頭
$ ダラー、ドルマーク 末尾
[] スクエアブラケット開、スクエアブラケット閉 []内のいずれか1文字
* アスタリスク 0回以上の繰り返し
+ プラス 1回以上の繰り返し
? クエスチョンマーク 0回または1回の繰り返し
| バー OR
() バーレン開、バーレン閉 グループ

という意味を持っています。


例えば正規表現を求められる場で「oxynotes.com」と入力するとエラーが出ます。
任意の一文字」を表す「.(ドット)」が使われている為です。
そこで登場するのが

メタ文字 読み方 意味
¥ バックスラッシュ、円マーク エスケープ

¥の次にくる特殊文字をプレーン文字(ようはテキストデータ)として扱ってくれるメタ文字です。

つまり「oxynotes.com/hoge」を正規表現で表すには「oxynotes¥.com¥/hoge」と入力すれば問題なく動作します。

また区切りに使われる文字もエスケープする必要があります。例えば「/(スラッシュ)」です。「/から/で囲んだパターンでマッチさせる」という書式の場合URLなどスラッシュ含む文字をマッチさせるには「¥/」とする必要があります。