クイックスタート
チュートリアル
ツールと言語
リファレンス
書評
正規表現チュートリアル
はじめに
目次
特殊文字
非表示文字
正規表現エンジンの内部動作
文字クラス
文字クラスの減算
文字クラスの交差
文字クラスの省略記法
ドット
アンカー
単語境界
オルタネーション
オプション項目
繰り返し
グループ化とキャプチャ
バックリファレンス
バックリファレンス、パート2
名前付きグループ
相対バックリファレンス
ブランチリセットグループ
フリースペースとコメント
Unicode
モード修飾子
アトミックグループ化
所有格量子化子
先行参照と後行参照
先行参照と後行参照、パート2
マッチからテキストを除外する
条件式
バランスグループ
再帰
サブルーチン
無限再帰
再帰と量子化子
再帰とキャプチャ
再帰とバックリファレンス
再帰とバックトラッキング
POSIXブラケット式
ゼロ長マッチ
マッチの継続
このサイトについて、さらに
はじめに
正規表現クイックスタート
正規表現チュートリアル
置換文字列チュートリアル
アプリケーションと言語
正規表現の例
正規表現リファレンス
置換文字列リファレンス
書評
印刷可能なPDF
このサイトについて
RSSフィードとブログ
RegexBuddy—Better than a regular expression tutorial!

相対バックリファレンス

一部のアプリケーションは相対バックリファレンスをサポートしています。これらは、負の数を用いて、バックリファレンスの前にあるグループを参照します。相対バックリファレンスが参照するグループを見つけるには、バックリファレンスの絶対値を取り、その数の開き括弧(名前付きまたは名前なしのキャプチャグループ)を、バックリファレンスから始めて、正規表現を右から左に数えます。そのため(a)(b)(c)\k<-1>abccにマッチし、(a)(b)(c)\k<-3>はabcaにマッチします。バックリファレンスがキャプチャグループ内にある場合、そのキャプチャグループの開き括弧も数える必要があります。そのため(a)(b)(c\k<-2>)はabcb. (a)(b)(c\k<-1>)は、アプリケーションがネストされたバックリファレンスを許可するかどうかによって、マッチに失敗するか、エラーになるかのいずれかです。

ネストされたバックリファレンスの構文は大きく異なります。名前付きバックリファレンスの構文の拡張であるのが一般的です。JGsoft V2Ruby 1.9以降は\k<-1>にマッチし、\k'-1'をサポートしています。これは.NETの名前付きキャプチャの構文のように見えますが、.NET自体は相対バックリファレンスをサポートしていません。

Perl 5.10、PCRE 7.0、PHP 5.2.2、R\g{-1}にマッチし、\g-1.

をサポートしています。Boostは、Boost 1.42以降、Perl構文をサポートしています。Boost 1.47以降、Ruby構文を追加しました。さらに複雑なことに、Boost 1.47ではこれらのバリエーションが乗算されるようになりました。Boost 1.47以降では、相対バックリファレンスを次のように指定できます。\gまたは\kそして、波括弧、山括弧、または引用符を使用します。これにより、さらに\g-1が加わり、合計7つのバリエーションになります。これは、\gを山括弧または引用符と負の数で相対サブルーチンコールとして扱うRuby、PCRE、PHP、R、JGsoftとBoostを競合させます。