導入
( ) は要素を束ねるだけでなく、囲んだ部分のマッチ結果を 番号付きで記憶 します。これを キャプチャ(capture) と呼びます。「日付にマッチさせて、年・月・日を別々に取り出す」といった処理の土台です。
説明
パターンの中の ( ) は、左のカッコが現れた順に 1, 2, 3 … と番号が振られます。マッチ全体は 0 番、各グループはその番号で取り出せます。
パターン: (\d{4})-(\d{2})-(\d{2})
対象: 2026-07-25
グループ0(全体): 2026-07-25
グループ1: 2026 ← (\d{4})
グループ2: 07 ← (\d{2})
グループ3: 25 ← (\d{2})
プログラムからは、この番号(や後述の名前)を使って各部分を受け取ります。「マッチしたかどうか」だけでなく「マッチした中身を分解して使える」のがキャプチャの価値です。
多くのエンジンでは 名前付きキャプチャ も使えます。番号の代わりに意味のある名前を付けられ、読みやすくなります。
パターン: (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})
→ year=2026, month=07, day=25 のように名前で取り出せる
まとめるだけで取り出しは不要なとき 「グループ化はしたいが、キャプチャ(番号付け)は不要」なときは
(?: )と書きます。これを 非キャプチャグループ と呼び、番号を無駄に消費しないぶん意図が明確になります。例:(?:ab)+。
やってみよう
( ) で囲んだ部分は番号付きで取り出せる、と覚えましょう。日付やURLを「分解して使う」場面で、キャプチャは正規表現の主役になります。