🌟

正規表現の整理メモ

に公開

はじめに

正規表現をちゃんと使い始めて、全部は覚えなくても頻出のパターンを抑えるだけでかなり有用だったから実務で最も頻繁に使用されるパターンを重要度別に整理。
とても分かりやすかったので吉川ウェブさんのチートシートを参考にしています。

重要度:高(これだけ覚えれば実用的)

パターンマッチング基本

文字セットの一致

[abc] - 括弧内の文字(a、b、またはc)のいずれか1文字に一致

任意の1文字に一致

. - 改行を除く任意の1文字に一致

繰り返しパターン

範囲指定の繰り返し

{n,m} - 直前の要素がn回以上m回以下の繰り返し

  • a{2,4} は「aa」「aaa」「aaaa」にマッチ
  • {n,} で「n回以上」を表現
  • {,m} で「m回以下」を表現

固定回数の繰り返し

{n} - 直前の要素がちょうどn回繰り返し

  • a{3} は「aaa」にのみマッチ

0回以上の繰り返し

* - 直前の要素が0回以上の繰り返し

  • a* は「」(空文字)、「a」、「aa」、「aaa」...にマッチ

1回以上の繰り返し

+ - 直前の要素が1回以上の繰り返し

  • a+ は「a」、「aa」、「aaa」...にマッチ

キャプチャと参照

グループ化とキャプチャ

(パターン) - 括弧内のパターンをグループ化し、後で参照できるようにキャプチャ

キャプチャグループの参照

$n - n番目にキャプチャしたグループを参照

  • 置換表現で使用

重要度:中(応用テクニック)

拡張パターンマッチング

否定文字セット

[^abc] - 括弧内の文字(a、b、c)以外の任意の1文字に一致

選択(OR)

パターン1|パターン2 - いずれかのパターンに一致

  • cat|dog は「cat」または「dog」にマッチ

最小一致(非貪欲マッチ)

パターン? - 繰り返しパターンの後に?を付けると最小一致になる

  • a{1,3}? は「aaa」という文字列に対して「a」のみにマッチ
  • デフォルトは最大一致(貪欲マッチ)

制御文字

特殊な文字や空白を表現するためのエスケープシーケンス:

表現 意味
\t タブ文字
\n 改行文字
\r キャリッジリターン
\s 任意の空白文字(スペース、タブ、改行など)
\d 任意の数字(0-9)
\w 任意の英数字とアンダースコア

重要度:低(高度な使用例)

これらは必要に応じて参照するレベルです:

  • 先読み・後読みアサーション
  • 条件付きマッチング
  • 再帰パターン
  • Unicode対応

実践的な使用例

メールアドレスの基本的な検証

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}

電話番号(日本の一般的な形式)

0\d{1,4}-\d{1,4}-\d{4}

HTMLタグの抽出

<([a-z]+)([^<]+)*(?:>(.*?)</\1>|\s+/>)

※あくまでも参考例なので、実務に利用する場合は十分に検証を行ってください

まとめ

正規表現は最初は複雑に見えますが、基本的なパターンを組み合わせるだけでも非常に強力なテキスト処理が可能になります。日常的な使用では「重要度:高」のセクションだけでも十分実用的です。より複雑なパターンが必要な場合は、必要に応じてチートシートを参照することをお勧めします。


参考:吉川ウェブさんの正規表現チートシート

Discussion