正規表現後方参照
キャプチャグループでマッチした文字列を、同じパターン内で再利用する機能。\1、\2 などで参照する。
正規表現の後方参照 (バックリファレンス) とは、キャプチャグループ () でマッチした文字列を、同じ正規表現パターン内で \1、\2 などの記法で再利用する機能です。最初のキャプチャグループが \1、2 番目が \2 というように、グループの出現順に番号が割り当てられます。
後方参照の代表的な使用例は、重複する単語の検出です。(\w+)\s+\1 というパターンは「the the」のように同じ単語が連続する箇所にマッチします。HTML のタグマッチング <(\w+)>.*?</\1> も典型的な活用例で、開始タグと終了タグの一致を検証できます。正規表現詳解の書籍で高度なパターンを学べます。
置換操作では、キャプチャグループの内容を $1、$2 (言語によっては \1、\2) で参照できます。たとえば日付形式の変換で (\d{4})-(\d{2})-(\d{2}) にマッチさせ、$3/$2/$1 で置換すれば「2025-01-15」を「15/01/2025」に変換できます。テキストの整形や変換において強力なツールです。
名前付きキャプチャグループ (?<year>\d{4}) を使えば、\k<year> で名前による後方参照が可能です。番号による参照よりも可読性が高く、グループの追加・削除による番号のずれを防げます。JavaScript では ES2018 から名前付きグループがサポートされています。
後方参照を使う際の注意点として、パフォーマンスへの影響があります。後方参照を含むパターンは正規表現エンジンの最適化が効きにくく、大量のテキストに対して実行すると処理速度が低下する場合があります。また、後方参照は正規言語の範囲を超えるため、一部の正規表現エンジン (RE2 など) ではサポートされていません。正規表現実践の書籍も参考になります。
文字数カウントの観点では、後方参照を使った正規表現は繰り返しパターンの検出に有用です。テキスト内の重複する文字列を見つけて冗長性を分析したり、コピー&ペーストによる意図しない重複を検出したりする場面で活用できます。