レッスン 4
キャプチャグループと置換
グループ化、後方参照、置換テンプレート。
キャプチャグループ は regex がマッチの一部を記憶できます。その記憶が抽出、検証の分解、構造化検索置換を支えます。
番号付きグループ
括弧は左から右へ番号付きグループを作ります。
パターン: (\d{4})-(\d{2})-(\d{2}) を 2026-05-28 に
| グループ | 値 |
|---|---|
$1 / \1 | 2026 |
$2 | 05 |
$3 | 28 |
JavaScript の replace コールバックでは match[1]、match[2]、… が同じ値を保持します。
非キャプチャグループ
キャプチャを保存せずグループ化が必要なら (?: ... ) を使います。
(?:https?):// はスキームの選択肢をグループ化し $1 を占有しません。
後から任意プレフィックスを追加しても置換テンプレートを安定させられます。
後方参照
パターン内の \1 はグループ 1 がマッチしたものを参照します。典型例: (['"]).*?\1 は同じ開始・終了引用符の引用文字列にマッチ。
後方参照は強力でネスト構造で誤用しやすい—HTML を regex だけで解析しない理由の一つです。
置換テンプレート
エディタと言語は replace 文字列で $1、$2、$&(全体マッチ)を使います。
- キャプチャ多用パターンで
user_id=123をuserId: 123に - グループの並べ替えで
DD/MM/YYYYをYYYY-MM-DDに正規化
複数行 で置換をプレビューし、空フィールドと予期しない空白を含めてください。
名前付きグループ(モダン JavaScript)
(?<year>\d{4}) は match.groups.year を公開します。名前付きグループは長いパターンの可読性を上げます。
要点
各キャプチャが 1 つの意味フィールド に対応するようパターンを設計してください。置換文字列に 10 個の $n が必要なら、パターンを簡素化するかパーサーを検討してください。