クイック スタート
チュートリアル
ツール & 言語
リファレンス
書籍 レビュー
正規表現リファレンス
はじめに
目次
クイックリファレンス
文字
基本機能
文字クラス
ショートハンド
アンカー
単語境界
量指定子
Unicode
キャプチャグループと後方参照
名前付きグループと後方参照
特殊グループ
モード修飾子
再帰とバランシンググループ
置換リファレンス
文字
マッチしたテキストと後方参照
コンテキストと大文字/小文字変換
条件
当サイトについて
はじめに
正規表現クイックスタート
正規表現チュートリアル
置換文字列チュートリアル
アプリケーションと言語
正規表現の例
正規表現リファレンス
置換文字列リファレンス
書籍レビュー
印刷用PDF
当サイトについて
RSSフィードとブログ
RegexBuddy—Better than a regular expression reference!

正規表現リファレンス: バランシンググループ、再帰、サブルーチン

機能構文説明JGsoft .NET Java Perl PCRE PCRE2 PHP Delphi R JavaScript VBScript XRegExp Python Ruby std::regex Boost Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE Oracle XML XPath
バランシンググループ (?<capture-subtract>regex)ここで、「capture」と「subtract」はグループ名、「regex」は任意の正規表現です。 「subtract」の名前は、正規表現内の別の場所でキャプチャグループの名前として使用する必要があります。このグループがまだ減算されていないマッチをキャプチャしている場合、バランシンググループは「subtract」から1つのキャプチャを減算し、「regex」とのマッチを試み、そのマッチをグループ「capture」に格納します。「capture」が省略されている場合は、マッチを格納せずに同じ処理が行われます。「regex」が省略されている場合、バランシンググループは文字列を移動せずに成功します。グループ「subtract」に減算するマッチがない場合、バランシンググループは「regex」が指定されているかどうかに関係なく、マッチに失敗します。 ^(?<l>\w)+\w?
(\k<l>(?<-l>))+
(?(l)(?!))$
回文の単語にマッチします
V2YESnononononononononononononononononononononono
バランシンググループ (?'capture-subtract'regex)ここで、「capture」と「subtract」はグループ名、「regex」は任意の正規表現です。 「subtract」の名前は、正規表現内の別の場所でキャプチャグループの名前として使用する必要があります。このグループがまだ減算されていないマッチをキャプチャしている場合、バランシンググループは「subtract」から1つのキャプチャを減算し、「regex」とのマッチを試み、そのマッチをグループ「capture」に格納します。「capture」が省略されている場合は、マッチを格納せずに同じ処理が行われます。「regex」が省略されている場合、バランシンググループは文字列を移動せずに成功します。グループ「subtract」に減算するマッチがない場合、バランシンググループは「regex」が指定されているかどうかに関係なく、マッチに失敗します。 ^(?'l'\w)+\w?
(\k'l'(?'-l'))+
(?(l)(?!))$
回文の単語にマッチします
V2YESnononononononononononononononononononononono
再帰 (?R) 正規表現全体の再帰。 a(?R)?zにマッチしますaz, aazz, aaazzzなど。 V2nono5.10YESYESYESYESYESnonononononoECMA
1.42–1.83
nononononononono
再帰 (?0) 正規表現全体の再帰。 a(?0)?zにマッチしますaz, aazz, aaazzzなど。 V2nono5.10YESYESYESYESYESnonononononoECMA
1.42–1.83
nononononononono
再帰 \g<0> 正規表現全体の再帰。 a\g<0>?zにマッチしますaz, aazz, aaazzzなど。 V2nonono7.7YES5.2.7YESYESnononono2.0nononononononononono
再帰 \g'0' 正規表現全体の再帰。 a\g'0'?zにマッチしますaz, aazz, aaazzzなど。 V2nonono7.7YES5.2.7YESYESnononono2.0nononononononononono
サブルーチン呼び出し (?1)ここで、1はキャプチャグループの番号です キャプチャグループの再帰またはキャプチャグループへのサブルーチン呼び出し。 a(b(?1)?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 V2no4のみ5.10YESYESYESYESYESnonononononoECMA
1.42–1.83
nononononononono
サブルーチン呼び出し \g<1>ここで、1はキャプチャグループの番号です キャプチャグループの再帰またはキャプチャグループへのサブルーチン呼び出し。 a(b\g<1>?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 V2nonono7.7YES5.2.7YESYESnononono1.9nononononononononono
サブルーチン呼び出し \g'1'ここで、1はキャプチャグループの番号です キャプチャグループの再帰またはキャプチャグループへのサブルーチン呼び出し。 a(b\g'1'?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 V2nonono7.7YES5.2.7YESYESnononono1.9nononononononononono
相対サブルーチン呼び出し (?-1)ここで、-1は負の整数です サブルーチン呼び出しから右から左に、名前付きまたは番号付きキャプチャグループの開いている括弧を、数値で指定された数だけカウントすることによって見つけることができるキャプチャグループの再帰またはサブルーチン呼び出し。 a(b(?-1)?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 V2nono5.107.2YES5.2.4YESYESnonononononoECMA
1.42–1.83
nononononononono
相対サブルーチン呼び出し \g<-1>ここで、-1は負の整数です サブルーチン呼び出しから右から左に、名前付きまたは番号付きキャプチャグループの開いている括弧を、数値で指定された数だけカウントすることによって見つけることができるキャプチャグループの再帰またはサブルーチン呼び出し。 a(b\g<-1>?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 V2nonono7.7YES5.2.7YESYESnononono1.9nononononononononono
相対サブルーチン呼び出し \g'-1'ここで、-1は負の整数です サブルーチン呼び出しから右から左に、名前付きまたは番号付きキャプチャグループの開いている括弧を、数値で指定された数だけカウントすることによって見つけることができるキャプチャグループの再帰またはサブルーチン呼び出し。 a(b\g'-1'?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 V2nonono7.7YES5.2.7YESYESnononono1.9nononononononononono
前方サブルーチン呼び出し (?+1)ここで、+1は正の整数です サブルーチン呼び出しから左から右に、名前付きまたは番号付きキャプチャグループの開いている括弧を、数値で指定された数だけカウントすることによって見つけることができるキャプチャグループの再帰またはサブルーチン呼び出し。 (?+1)x([ab])にマッチしますaxa, axb, bxa、およびbxb V2nono5.107.2YES5.2.4YESYESnonononononoECMA
1.42–1.83
nononononononono
前方サブルーチン呼び出し \g<+1>ここで、+1は正の整数です サブルーチン呼び出しから左から右に、名前付きまたは番号付きキャプチャグループの開いている括弧を、数値で指定された数だけカウントすることによって見つけることができるキャプチャグループの再帰またはサブルーチン呼び出し。 \g<+1>x([ab])にマッチしますaxa, axb, bxa、およびbxb V2nonono7.7YES5.2.7YESYESnononono2.0nononononononononono
前方サブルーチン呼び出し \g'+1'ここで、+1は正の整数です サブルーチン呼び出しから左から右に、名前付きまたは番号付きキャプチャグループの開いている括弧を、数値で指定された数だけカウントすることによって見つけることができるキャプチャグループの再帰またはサブルーチン呼び出し。 \g'+1'x([ab])にマッチしますaxa, axb, bxa、およびbxb V2nonono7.7YES5.2.7YESYESnononono2.0nononononononononono
名前付きサブルーチン呼び出し (?&name)ここで、「name」はキャプチャグループの名前です キャプチャグループの再帰またはキャプチャグループへのサブルーチン呼び出し。 a(?<x>b(?&x)?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 V2nono5.107.0YES5.2.2YESYESnonononononoECMA
1.42–1.83
nononononononono
名前付きサブルーチン呼び出し (?P>name)ここで、「name」はキャプチャグループの名前です キャプチャグループの再帰またはキャプチャグループへのサブルーチン呼び出し。 a(?P<x>b(?P>x)?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 V2nono5.10YESYESYESYESYESnonononononoECMA
1.42–1.83
nononononononono
名前付きサブルーチン呼び出し \g<name>ここで、「name」はキャプチャグループの名前です キャプチャグループの再帰またはキャプチャグループへのサブルーチン呼び出し。 a(?<x>b\g<x>?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 V2nonono7.7YES5.2.7YESYESnononono1.9nononononononononono
名前付きサブルーチン呼び出し \g'name'ここで、「name」はキャプチャグループの名前です キャプチャグループの再帰またはキャプチャグループへのサブルーチン呼び出し。 a(?'x'b\g'x'?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 V2nonono7.7YES5.2.7YESYESnononono1.9nononononononononono
サブルーチン定義 (?(DEFINE)regex)ここで、「regex」は任意の正規表現です DEFINEグループはマッチングプロセスに参加しません。DEFINEグループ内のキャプチャグループに対してサブルーチン呼び出しを行うことができます。 (?(DEFINE)([ab]))
x(?1)y(?1)z
にマッチしますxayaz, xaybz, xbyaz、およびxbybz
V2nono5.107.0YES5.2.2YESYESnonononononoECMA
1.42–1.83
nononononononono
サブルーチン呼び出しはキャプチャする Rubyスタイルのサブルーチン呼び出し\g構文 キャプチャグループへのサブルーチン呼び出しでは、そのキャプチャグループにサブルーチン呼び出し中にマッチしたテキストが格納されます。 次の時([ab])\g'1'にマッチしますab最初のキャプチャグループはbマッチ後を保持します。 V2該当なし該当なし該当なしnonononono該当なし該当なし該当なし該当なし1.9該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし
サブルーチン呼び出しはキャプチャする 以下の構文以外のサブルーチン呼び出し\g キャプチャグループへのサブルーチン呼び出しでは、そのキャプチャグループにサブルーチン呼び出し中にマッチしたテキストが格納されます。 次の時([ab])(?1)にマッチしますab最初のキャプチャグループはbマッチ後を保持します。 no該当なしnonononononono該当なし該当なし該当なし該当なし該当なし該当なしno該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし
再帰はキャプチャグループを分離する 再帰またはサブルーチン呼び出し 各サブルーチン呼び出しには、キャプチャグループ用の個別のストレージスペースがあります。呼び出し内の後方参照は、呼び出し前にマッチしたテキストを参照できず、呼び出し後の後方参照は、呼び出し中にマッチしたテキストを参照できません。再帰内の後方参照は、他の再帰レベルでマッチしたテキストを参照できません。 (a)(\1)(?2)何もマッチしません。なぜなら\1常に以下による呼び出し中に失敗します(?2). no該当なしno5.10–5.18nonononono該当なし該当なし該当なし該当なしno該当なしno該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし
再帰はキャプチャグループを元に戻す Rubyスタイルの再帰またはサブルーチン呼び出し\g構文 正規表現エンジンが再帰またはサブルーチン呼び出しから終了すると、すべてのキャプチャグループを、再帰またはサブルーチン呼び出しに入る前にマッチしていたテキストに戻します。 次の時(a)(([bc])\1)\g'2'にマッチしますabaca3番目のグループはbマッチ後 no該当なし該当なし該当なし7.7YES5.2.7YESYES該当なし該当なし該当なし該当なしno該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし
再帰はキャプチャグループを元に戻す 以下の構文以外の再帰またはサブルーチン呼び出し\g 正規表現エンジンが再帰またはサブルーチン呼び出しから終了すると、すべてのキャプチャグループを、再帰またはサブルーチン呼び出しに入る前にマッチしていたテキストに戻します。 次の時(a)(([bc])\1)(?2)にマッチしますabaca3番目のグループはbマッチ後 V2該当なしno5.10YESYESYESYESYES該当なし該当なし該当なし該当なし該当なし該当なしECMA
1.42–1.83
該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし
再帰はキャプチャグループを分離または元に戻さない Rubyスタイルの再帰またはサブルーチン呼び出し\g構文 キャプチャグループは、再帰およびサブルーチン呼び出しによって特別に処理されることはありません。ただし、サブルーチン呼び出しはキャプチャする可能性があります。後方参照は常に、再帰の同じレベルの内側にあるかどうかに関係なく、各キャプチャグループによって最も最近マッチされたテキストを参照します。 次の時(a)(([bc])\1)\g'2'にマッチしますabaca3番目のグループはcマッチ後 V2該当なし該当なし該当なしnonononono該当なし該当なし該当なし該当なし1.9該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし
再帰はキャプチャグループを分離または元に戻さない 以下の構文以外の再帰またはサブルーチン呼び出し\g キャプチャグループは、再帰およびサブルーチン呼び出しによって特別に処理されることはありません。ただし、サブルーチン呼び出しはキャプチャする可能性があります。後方参照は常に、再帰の同じレベルの内側にあるかどうかに関係なく、各キャプチャグループによって最も最近マッチされたテキストを参照します。 次の時(a)(([bc])\1)(?2)にマッチしますabaca3番目のグループはcマッチ後 no該当なし4のみnononononono該当なし該当なし該当なし該当なし該当なし該当なしno該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし
再帰はアトミック 以下の再帰またはサブルーチン呼び出し(?P>…) 再帰とサブルーチン呼び出しはアトミックです。正規表現エンジンがそれらから終了すると、再帰またはサブルーチン呼び出しの異なる順列を試すために、バックトラックすることはありません。 (a+)(?P>1)(?P>1)最初の(?P>1)は残りのすべてのaにマッチし、2番目の(?P>1)が失敗した場合、正規表現エンジンは最初の V2該当なし該当なしno6.5にバックトラックしないため、何もマッチしません。10.00–10.23YES5.1.3–7.2.34該当なし該当なし該当なし該当なし該当なし該当なしno該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし
再帰はアトミック 2.14.0–3.6.3(?P>0) 以外の構文を使用した正規表現全体の再帰 正規表現全体の再帰はアトミックです。正規表現エンジンが再帰から抜けると、再帰のさまざまな順列を試すためにバックトラックすることはありません。にマッチしますaa$|a(?R)a|aaaaa no該当なし該当なしno6.5YES10.00–10.23YESYES該当なし該当なし該当なし該当なしno該当なしECMA
1.42–1.83
該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし
再帰はアトミック 以下の構文以外のサブルーチン呼び出し(?P>…) にマッチしますが、再帰がアトミックの場合、そうでない場合は文字列全体にマッチします。 サブルーチン呼び出しはアトミックです。正規表現エンジンがそれらから抜けると、サブルーチン呼び出しのさまざまな順列を試すためにバックトラックすることはありません。最初の(?1)は残りのすべてのaにマッチし、2番目の(?1)が失敗した場合、正規表現エンジンは最初の no該当なし4のみno6.5にバックトラックしないため、何もマッチしません。10.00–10.23YES5.1.3–7.2.34該当なし該当なし該当なし該当なしno該当なしno該当なし該当なし該当なし該当なし該当なし該当なし該当なし該当なし
機能構文説明JGsoft .NET Java Perl PCRE PCRE2 PHP Delphi R JavaScript VBScript XRegExp Python Ruby std::regex Boost Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE Oracle XML XPath