A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Regular_expressions/Capturing_group below:

ã‚ャプチャグループ: (...) - JavaScript | MDN

キャプチャグループは JavaScript の式におけるグループ化演算子のような役割を果たし、サブパターンを単一のアトムとして使用できるようにします。

キャプチャグループには、開始括弧の順番で番号が振られます。最初のキャプチャグループは 1、2 つ目は 2、といった具合に番号が振られます。名前付きキャプチャグループもキャプチャグループであり、他の(名前のない)キャプチャグループと一緒に番号が付けられます。キャプチャグループの一致に関する情報には、以下のようにしてアクセスできます。

メモ: exec() の結果の配列でも、キャプチャグループは 1、2 などの番号でアクセスされますが、これは要素 0`` が一致するもの全体であるためです。\0` は後方参照ではなく、NUL 文字の文字エスケープです。

正規表現コード内のキャプチャグループは、その結果と一対一に対応します。キャプチャグループが一致しない場合(例えば、それが論理和の一致しない選択肢に属する場合)、対応する結果は未定義です。

/(ab)|(cd)/.exec("cd"); // ['cd', undefined, 'cd']

キャプチャグループは数量化できます。この場合、このグループに対応する一致情報は、そのグループで最後に一致したものとなります。

/([ab])+/.exec("abc"); // ['ab', 'b']; because "b" comes after "a", this result overwrites the previous one

キャプチャグループは、先読みおよび後読みアサーションで使用できます。後読みアサーションはアトムを逆方向に一致させるので、 このグループに対応する最終的な一致は文字列の左端に現れるものになります。ただし、一致するグループのインデックスは、正規表現ソース内の相対位置に対応します。

/c(?=(ab))/.exec("cab"); // ['c', 'ab']
/(?<=(a)(b))c/.exec("abc"); // ['c', 'a', 'b']
/(?<=([ab])+)c/.exec("abc"); // ['c', 'a']; because "a" is seen by the lookbehind after the lookbehind has seen "b"

キャプチャグループは入れ子にすることができ、その場合、開き括弧によって順序付けされるため、外側のグループが最初に番号付けされ、次に内側のグループが番号付けされます。入れ子になったグループが数量詞によって繰り返される場合、そのグループが一致するたびにサブグループの結果はすべて上書きされ、場合によっては undefined になります。

/((a+)?(b+)?(c))*/.exec("aacbbbcac"); // ['aacbbbcac', 'ac', 'a', undefined, 'c']

上の例では、外側のグループは 3 回一致します。

  1. "aac" に一致。サブグループは "aa"、undefined、"c"。
  2. "bbbc" に一致。サブグループは undefined、"bbb"、"c"。
  3. "ac" に一致。サブグループは "a"、undefined、"c"。

2 回目の一致で得られた "bbb" の結果は保存されません。3 つ目の一致で undefined で上書きされるからです。

d フラグを用いることで、入力文字列中の各キャプチャグループの開始と終わりのインデックスを取得することができます。これは、exec() が返す配列に indices プロパティを作成します。

オプションでキャプチャグループに名前を指定することができ、グループの位置やインデックス関連の落とし穴を避けるのに役立ちます。詳細は、名前付きキャプチャグループを参照してください。

括弧は、異なる正規表現構文において他の目的もあります。例えば、先読みアサーションや後読みアサーションも括弧で囲みます。これらの構文はすべて ? で始まり、? は ( の直後には置くことができない数量詞なので、曖昧さにはつながりません。


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4