正規表現グループ
() によるキャプチャグループと後方参照。パターンの一部をグループ化し、マッチした部分を取得・再利用する。
正規表現グループ (Group) は、パターンの一部を括弧 () で囲んでグループ化する機能です。グループ化には 3 つの主要な種類があります。キャプチャグループ (...)、名前付きキャプチャグループ (?<name>...)、非キャプチャグループ (?:...) です。それぞれ用途が異なり、適切に使い分けることで正規表現の可読性とパフォーマンスが向上します。
キャプチャグループはマッチした部分文字列を記憶し、後方参照や置換で再利用できます。JavaScript では match() や exec() の結果配列でキャプチャグループの値を取得できます。たとえば /(\d{4})-(\d{2})-(\d{2})/ で日付文字列をマッチさせると、年・月・日をそれぞれ個別に取得できます。正規表現応用の書籍でグループの高度な使い方を学べます。
名前付きグループ (?<name>...) を使うと、groups.name でアクセスでき可読性が大幅に向上します。/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/ のように記述すれば、result.groups.year で年を取得でき、番号による参照よりも意図が明確です。
非キャプチャグループ (?:...) はグループ化のみを行い、マッチ結果を記憶しません。キャプチャが不要な場面で使用すると、メモリ消費を抑えパフォーマンスが向上します。たとえば (?:http|https):// は URL のプロトコル部分をグループ化しますが、キャプチャは行いません。
後方参照 \1、\2 を使うと、同じパターン内で以前にキャプチャした文字列と同じ文字列にマッチさせることができます。HTML タグの開始・終了タグの一致検証 <(\w+)>.*?</\1> や、重複単語の検出 (\w+)\s+\1 などに使われます。置換操作では $1、$2 でキャプチャグループの内容を参照し、テキストの再構成が可能です。プログラミングテキスト処理の書籍で後方参照の実践例が解説されています。
文字数カウントとの関連では、グループを使ってテキストから特定のパターンを抽出し、その出現回数や文字数を集計する用途があります。たとえば URL やメールアドレスをグループでキャプチャし、本文中に含まれる数を数えるといった分析が可能です。