正規表現リファレンス |
はじめに |
目次 |
クイックリファレンス |
文字 |
基本機能 |
文字クラス |
ショートハンド |
アンカー |
単語境界 |
量指定子 |
Unicode |
キャプチャグループと後方参照 |
名前付きグループと後方参照 |
特殊グループ |
モード修飾子 |
再帰とバランシンググループ |
置換リファレンス |
文字 |
マッチしたテキストと後方参照 |
コンテキストと大文字/小文字変換 |
条件 |
当サイトについて |
はじめに |
正規表現クイックスタート |
正規表現チュートリアル |
置換文字列チュートリアル |
アプリケーションと言語 |
正規表現の例 |
正規表現リファレンス |
置換文字列リファレンス |
書籍レビュー |
印刷用PDF |
当サイトについて |
RSSフィードとブログ |
機能 | 構文 | 説明 | 例 | 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)(?!))$回文の単語にマッチします |
V2 | YES | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no |
バランシンググループ | (?'capture-subtract'regex)ここで、「capture」と「subtract」はグループ名、「regex」は任意の正規表現です。 | 「subtract」の名前は、正規表現内の別の場所でキャプチャグループの名前として使用する必要があります。このグループがまだ減算されていないマッチをキャプチャしている場合、バランシンググループは「subtract」から1つのキャプチャを減算し、「regex」とのマッチを試み、そのマッチをグループ「capture」に格納します。「capture」が省略されている場合は、マッチを格納せずに同じ処理が行われます。「regex」が省略されている場合、バランシンググループは文字列を移動せずに成功します。グループ「subtract」に減算するマッチがない場合、バランシンググループは「regex」が指定されているかどうかに関係なく、マッチに失敗します。 | ^(?'l'\w)+\w? (\k'l'(?'-l'))+ (?(l)(?!))$回文の単語にマッチします |
V2 | YES | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no | no |
再帰 | (?R) | 正規表現全体の再帰。 | a(?R)?zにマッチしますaz, aazz, aaazzzなど。 | V2 | no | no | 5.10 | YES | YES | YES | YES | YES | no | no | no | no | no | no | ECMA 1.42–1.83 | no | no | no | no | no | no | no | no |
再帰 | (?0) | 正規表現全体の再帰。 | a(?0)?zにマッチしますaz, aazz, aaazzzなど。 | V2 | no | no | 5.10 | YES | YES | YES | YES | YES | no | no | no | no | no | no | ECMA 1.42–1.83 | no | no | no | no | no | no | no | no |
再帰 | \g<0> | 正規表現全体の再帰。 | a\g<0>?zにマッチしますaz, aazz, aaazzzなど。 | V2 | no | no | no | 7.7 | YES | 5.2.7 | YES | YES | no | no | no | no | 2.0 | no | no | no | no | no | no | no | no | no | no |
再帰 | \g'0' | 正規表現全体の再帰。 | a\g'0'?zにマッチしますaz, aazz, aaazzzなど。 | V2 | no | no | no | 7.7 | YES | 5.2.7 | YES | YES | no | no | no | no | 2.0 | no | no | no | no | no | no | no | no | no | no |
サブルーチン呼び出し | (?1)ここで、1はキャプチャグループの番号です | キャプチャグループの再帰またはキャプチャグループへのサブルーチン呼び出し。 | a(b(?1)?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 | V2 | no | 4のみ | 5.10 | YES | YES | YES | YES | YES | no | no | no | no | no | no | ECMA 1.42–1.83 | no | no | no | no | no | no | no | no |
サブルーチン呼び出し | \g<1>ここで、1はキャプチャグループの番号です | キャプチャグループの再帰またはキャプチャグループへのサブルーチン呼び出し。 | a(b\g<1>?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 | V2 | no | no | no | 7.7 | YES | 5.2.7 | YES | YES | no | no | no | no | 1.9 | no | no | no | no | no | no | no | no | no | no |
サブルーチン呼び出し | \g'1'ここで、1はキャプチャグループの番号です | キャプチャグループの再帰またはキャプチャグループへのサブルーチン呼び出し。 | a(b\g'1'?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 | V2 | no | no | no | 7.7 | YES | 5.2.7 | YES | YES | no | no | no | no | 1.9 | no | no | no | no | no | no | no | no | no | no |
相対サブルーチン呼び出し | (?-1)ここで、-1は負の整数です | サブルーチン呼び出しから右から左に、名前付きまたは番号付きキャプチャグループの開いている括弧を、数値で指定された数だけカウントすることによって見つけることができるキャプチャグループの再帰またはサブルーチン呼び出し。 | a(b(?-1)?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 | V2 | no | no | 5.10 | 7.2 | YES | 5.2.4 | YES | YES | no | no | no | no | no | no | ECMA 1.42–1.83 | no | no | no | no | no | no | no | no |
相対サブルーチン呼び出し | \g<-1>ここで、-1は負の整数です | サブルーチン呼び出しから右から左に、名前付きまたは番号付きキャプチャグループの開いている括弧を、数値で指定された数だけカウントすることによって見つけることができるキャプチャグループの再帰またはサブルーチン呼び出し。 | a(b\g<-1>?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 | V2 | no | no | no | 7.7 | YES | 5.2.7 | YES | YES | no | no | no | no | 1.9 | no | no | no | no | no | no | no | no | no | no |
相対サブルーチン呼び出し | \g'-1'ここで、-1は負の整数です | サブルーチン呼び出しから右から左に、名前付きまたは番号付きキャプチャグループの開いている括弧を、数値で指定された数だけカウントすることによって見つけることができるキャプチャグループの再帰またはサブルーチン呼び出し。 | a(b\g'-1'?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 | V2 | no | no | no | 7.7 | YES | 5.2.7 | YES | YES | no | no | no | no | 1.9 | no | no | no | no | no | no | no | no | no | no |
前方サブルーチン呼び出し | (?+1)ここで、+1は正の整数です | サブルーチン呼び出しから左から右に、名前付きまたは番号付きキャプチャグループの開いている括弧を、数値で指定された数だけカウントすることによって見つけることができるキャプチャグループの再帰またはサブルーチン呼び出し。 | (?+1)x([ab])にマッチしますaxa, axb, bxa、およびbxb | V2 | no | no | 5.10 | 7.2 | YES | 5.2.4 | YES | YES | no | no | no | no | no | no | ECMA 1.42–1.83 | no | no | no | no | no | no | no | no |
前方サブルーチン呼び出し | \g<+1>ここで、+1は正の整数です | サブルーチン呼び出しから左から右に、名前付きまたは番号付きキャプチャグループの開いている括弧を、数値で指定された数だけカウントすることによって見つけることができるキャプチャグループの再帰またはサブルーチン呼び出し。 | \g<+1>x([ab])にマッチしますaxa, axb, bxa、およびbxb | V2 | no | no | no | 7.7 | YES | 5.2.7 | YES | YES | no | no | no | no | 2.0 | no | no | no | no | no | no | no | no | no | no |
前方サブルーチン呼び出し | \g'+1'ここで、+1は正の整数です | サブルーチン呼び出しから左から右に、名前付きまたは番号付きキャプチャグループの開いている括弧を、数値で指定された数だけカウントすることによって見つけることができるキャプチャグループの再帰またはサブルーチン呼び出し。 | \g'+1'x([ab])にマッチしますaxa, axb, bxa、およびbxb | V2 | no | no | no | 7.7 | YES | 5.2.7 | YES | YES | no | no | no | no | 2.0 | no | no | no | no | no | no | no | no | no | no |
名前付きサブルーチン呼び出し | (?&name)ここで、「name」はキャプチャグループの名前です | キャプチャグループの再帰またはキャプチャグループへのサブルーチン呼び出し。 | a(?<x>b(?&x)?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 | V2 | no | no | 5.10 | 7.0 | YES | 5.2.2 | YES | YES | no | no | no | no | no | no | ECMA 1.42–1.83 | no | no | no | no | no | no | no | no |
名前付きサブルーチン呼び出し | (?P>name)ここで、「name」はキャプチャグループの名前です | キャプチャグループの再帰またはキャプチャグループへのサブルーチン呼び出し。 | a(?P<x>b(?P>x)?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 | V2 | no | no | 5.10 | YES | YES | YES | YES | YES | no | no | no | no | no | no | ECMA 1.42–1.83 | no | no | no | no | no | no | no | no |
名前付きサブルーチン呼び出し | \g<name>ここで、「name」はキャプチャグループの名前です | キャプチャグループの再帰またはキャプチャグループへのサブルーチン呼び出し。 | a(?<x>b\g<x>?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 | V2 | no | no | no | 7.7 | YES | 5.2.7 | YES | YES | no | no | no | no | 1.9 | no | no | no | no | no | no | no | no | no | no |
名前付きサブルーチン呼び出し | \g'name'ここで、「name」はキャプチャグループの名前です | キャプチャグループの再帰またはキャプチャグループへのサブルーチン呼び出し。 | a(?'x'b\g'x'?y)zにマッチしますabyz, abbyyz, abbbyyyzなど。 | V2 | no | no | no | 7.7 | YES | 5.2.7 | YES | YES | no | no | no | no | 1.9 | no | no | no | no | no | no | no | no | no | no |
サブルーチン定義 | (?(DEFINE)regex)ここで、「regex」は任意の正規表現です | DEFINEグループはマッチングプロセスに参加しません。DEFINEグループ内のキャプチャグループに対してサブルーチン呼び出しを行うことができます。 | (?(DEFINE)([ab])) x(?1)y(?1)zにマッチしますxayaz, xaybz, xbyaz、およびxbybz |
V2 | no | no | 5.10 | 7.0 | YES | 5.2.2 | YES | YES | no | no | no | no | no | no | ECMA 1.42–1.83 | no | no | no | no | no | no | no | no |
サブルーチン呼び出しはキャプチャする | Rubyスタイルのサブルーチン呼び出し\g構文 | キャプチャグループへのサブルーチン呼び出しでは、そのキャプチャグループにサブルーチン呼び出し中にマッチしたテキストが格納されます。 | 次の時([ab])\g'1'にマッチしますab最初のキャプチャグループはbマッチ後を保持します。 | V2 | 該当なし | 該当なし | 該当なし | no | no | no | no | no | 該当なし | 該当なし | 該当なし | 該当なし | 1.9 | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし |
サブルーチン呼び出しはキャプチャする | 以下の構文以外のサブルーチン呼び出し\g | キャプチャグループへのサブルーチン呼び出しでは、そのキャプチャグループにサブルーチン呼び出し中にマッチしたテキストが格納されます。 | 次の時([ab])(?1)にマッチしますab最初のキャプチャグループはbマッチ後を保持します。 | no | 該当なし | no | no | no | no | no | no | no | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | no | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし |
再帰はキャプチャグループを分離する | 再帰またはサブルーチン呼び出し | 各サブルーチン呼び出しには、キャプチャグループ用の個別のストレージスペースがあります。呼び出し内の後方参照は、呼び出し前にマッチしたテキストを参照できず、呼び出し後の後方参照は、呼び出し中にマッチしたテキストを参照できません。再帰内の後方参照は、他の再帰レベルでマッチしたテキストを参照できません。 | (a)(\1)(?2)何もマッチしません。なぜなら\1常に以下による呼び出し中に失敗します(?2). | no | 該当なし | no | 5.10–5.18 | no | no | no | no | no | 該当なし | 該当なし | 該当なし | 該当なし | no | 該当なし | no | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし |
再帰はキャプチャグループを元に戻す | Rubyスタイルの再帰またはサブルーチン呼び出し\g構文 | 正規表現エンジンが再帰またはサブルーチン呼び出しから終了すると、すべてのキャプチャグループを、再帰またはサブルーチン呼び出しに入る前にマッチしていたテキストに戻します。 | 次の時(a)(([bc])\1)\g'2'にマッチしますabaca3番目のグループはbマッチ後 | no | 該当なし | 該当なし | 該当なし | 7.7 | YES | 5.2.7 | YES | YES | 該当なし | 該当なし | 該当なし | 該当なし | no | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし |
再帰はキャプチャグループを元に戻す | 以下の構文以外の再帰またはサブルーチン呼び出し\g | 正規表現エンジンが再帰またはサブルーチン呼び出しから終了すると、すべてのキャプチャグループを、再帰またはサブルーチン呼び出しに入る前にマッチしていたテキストに戻します。 | 次の時(a)(([bc])\1)(?2)にマッチしますabaca3番目のグループはbマッチ後 | V2 | 該当なし | no | 5.10 | YES | YES | YES | YES | YES | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | ECMA 1.42–1.83 | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし |
再帰はキャプチャグループを分離または元に戻さない | Rubyスタイルの再帰またはサブルーチン呼び出し\g構文 | キャプチャグループは、再帰およびサブルーチン呼び出しによって特別に処理されることはありません。ただし、サブルーチン呼び出しはキャプチャする可能性があります。後方参照は常に、再帰の同じレベルの内側にあるかどうかに関係なく、各キャプチャグループによって最も最近マッチされたテキストを参照します。 | 次の時(a)(([bc])\1)\g'2'にマッチしますabaca3番目のグループはcマッチ後 | V2 | 該当なし | 該当なし | 該当なし | no | no | no | no | no | 該当なし | 該当なし | 該当なし | 該当なし | 1.9 | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし |
再帰はキャプチャグループを分離または元に戻さない | 以下の構文以外の再帰またはサブルーチン呼び出し\g | キャプチャグループは、再帰およびサブルーチン呼び出しによって特別に処理されることはありません。ただし、サブルーチン呼び出しはキャプチャする可能性があります。後方参照は常に、再帰の同じレベルの内側にあるかどうかに関係なく、各キャプチャグループによって最も最近マッチされたテキストを参照します。 | 次の時(a)(([bc])\1)(?2)にマッチしますabaca3番目のグループはcマッチ後 | no | 該当なし | 4のみ | no | no | no | no | no | no | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | no | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし |
再帰はアトミック | 以下の再帰またはサブルーチン呼び出し(?P>…) | 再帰とサブルーチン呼び出しはアトミックです。正規表現エンジンがそれらから終了すると、再帰またはサブルーチン呼び出しの異なる順列を試すために、バックトラックすることはありません。 | (a+)(?P>1)(?P>1)最初の(?P>1)は残りのすべてのaにマッチし、2番目の(?P>1)が失敗した場合、正規表現エンジンは最初の | V2 | 該当なし | 該当なし | no | 6.5 | にバックトラックしないため、何もマッチしません。 | 10.00–10.23 | YES | 5.1.3–7.2.34 | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | no | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし |
再帰はアトミック | 2.14.0–3.6.3(?P>0) | 以外の構文を使用した正規表現全体の再帰 | 正規表現全体の再帰はアトミックです。正規表現エンジンが再帰から抜けると、再帰のさまざまな順列を試すためにバックトラックすることはありません。にマッチしますaa$|a(?R)a|aaはaaa | no | 該当なし | 該当なし | no | 6.5 | YES | 10.00–10.23 | YES | YES | 該当なし | 該当なし | 該当なし | 該当なし | no | 該当なし | ECMA 1.42–1.83 | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし | 該当なし |
再帰はアトミック | 以下の構文以外のサブルーチン呼び出し(?P>…) | にマッチしますが、再帰がアトミックの場合、そうでない場合は文字列全体にマッチします。 | サブルーチン呼び出しはアトミックです。正規表現エンジンがそれらから抜けると、サブルーチン呼び出しのさまざまな順列を試すためにバックトラックすることはありません。最初の(?1)は残りのすべてのaにマッチし、2番目の(?1)が失敗した場合、正規表現エンジンは最初の | no | 該当なし | 4のみ | no | 6.5 | にバックトラックしないため、何もマッチしません。 | 10.00–10.23 | YES | 5.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 |
(a+)(?1)(?1)
| クイック スタート | チュートリアル | ツール & 言語 | 例 | リファレンス | 書籍 レビュー |
| はじめに | 目次 | クイックリファレンス | 文字 | 基本機能 | 文字クラス | ショートハンド | アンカー | 単語境界 | 量指定子 | Unicode | キャプチャグループと後方参照 | 名前付きグループと後方参照 | 特殊グループ | モード修飾子 | 再帰とバランシンググループ |
| 文字 | マッチしたテキストと後方参照 | コンテキストと大文字小文字変換 | 条件 |
ページURL: https://regular-expressions.dokyumento.jp/refrecurse.html
最終更新日: 2023年10月16日
サイト最終更新日: 2024年3月15日