ホームに戻る
関連 :
正規表現のススメ
目次 :

キャプチャ

括弧で括られた部分文字列を記憶しておき、後で参照できる機能。
同じ部分文字列の繰り返しを検出したり、キャプチャ結果を置換に用いたりすることができる。
参照する際は最初にキャプチャした部分文字列をメタ文字 \1 、以後 \2 、\3 …と数字を加算してゆく。

基本的な例

画像
上記の正規表現は、以下の文字列にマッチする。
A promise is promise A bargain is bargain

キャプチャの順序

複数の括弧が存在する場合(入れ子の場合を含む)、「開き括弧 ( 」の順にキャプチャ番号が割り当てられる
画像

変数による参照

環境によっては、キャプチャした内容を変数で参照することができる。
例 : Perl、Ruby、VS Code ⇒ 「$1」、「$2」、「$3」
VS Codeでキャプチャ結果を置換に用いる場合は、\ ではなく $ で参照する点に注意。

名前付きキャプチャ

キャプチャ結果はキャプチャ番号を用いて参照するため、キャプチャ箇所が増えた場合の可読性が良くない。
比較的新しい処理系では名前付きキャプチャを用いることができるため、キャプチャの目的が伝わりやすくなる。
画像
ここでは、キャプチャ結果に名前 "name" を与えている。
キャプチャ指定は(?<キャプチャ名>パターン)、キャプチャ結果の参照は\k<キャプチャ名>で行う。

キャプチャしない括弧

括弧はキャプチャの他にグループ化の役割も持っている。
グループ化のみを行い、キャプチャを行わない場合は以下のように記述する。
画像
ただし、記述が煩雑となるため使いどころには注意が必要。