正規表現は各部品が腑に落ちるまでは文字化けのように見えますが、一度わかれば最も便利な道具の一つになります。初心者でも覚えられるチートシートをどうぞ。
文字クラス
.—— 任意の文字(改行は除く。sフラグ時を除く)。\d—— 数字;\D—— 数字以外。\w—— 単語文字(英字・数字・アンダースコア);\W—— その逆。\s—— 空白;\S—— 空白以外。[abc]—— a・b・c のいずれか。[a-z]—— 範囲。[^abc]—— a・b・c 以外。
量指定子(個数)
*—— 0 個以上。+—— 1 個以上。?—— 0 か 1 個(省略可)。{3}—— ちょうど 3 個。{2,4}—— 2〜4 個。{2,}—— 2 個以上。- 量指定子の後ろに
?を付けると最小一致(できるだけ少なく):.+?。
アンカーと境界
^—— 文字列の先頭(m時は各行の先頭)。$—— 末尾。\b—— 単語境界 ——\bcat\bのような単語単位の一致に便利。
グループと選択
( … )—— キャプチャグループ;一致したテキストがグループ 1、2… として記憶されます。(?: … )—— キャプチャしないグループ(構造のみ)。a|b—— a または b に一致。
フラグ
g—— 最初だけでなくすべての一致を探す。i—— 大文字小文字を区別しない。m——^と$を各行で一致。s——.が改行にも一致。
いくつかの実用パターン
- 数字のみ:
^\d+$ - 簡単な日付:
\d{4}-\d{2}-\d{2} - 単語:
\b\w+\b - 大まかなメール:
[^@\s]+@[^@\s]+\.[^@\s]+
(本格的なメール検証は非常に難しいことで有名です —— この程度のパターンは簡易チェックには十分ですが、RFC に完全準拠した検証には向きません。)
時間を大きく節約するコツ
- 少しずつ組み立てる。 小さな部分から始めて追加し、一致の更新を見ながら進める。
- 文字どおりの意味なら特殊文字をエスケープ:
\.、\?、\(。 - 貪欲な
.*に注意 —— できるだけ多く取り込みます。行き過ぎたら.*?やより具体的なクラスに。 - 実データでテスト。失敗すると予想される境界ケースも含めて。
学ぶ最速の方法は、入力しながら一致がハイライトされるのを見ることです。無料の正規表現テスターでライブに試しましょう —— すべての一致をハイライトし、キャプチャグループを一覧表示します。すべてブラウザ内で動作します。