JavaScript 正規表現での任意のグループのキャプチャ
JavaScript 正規表現でグループのキャプチャを使用する場合は、制限を理解することが重要です。デフォルトでは、グループがネストされている場合でも、繰り返しグループの最後のキャプチャのみが保持されます。
例: ネストされたキャプチャ グループ
次の正規表現を考えてみましょう。
/^(\s*\w+)+$/
期待される出力:
["foo bar baz", "foo", " bar", " baz"]
実際の出力:
["foo bar baz", " baz"]
この場合、最後にキャプチャされたグループ「 baz」のみが返されます。これは、JavaScript が各繰り返しグループの最終キャプチャのみを保持するためです。
複数のグループをキャプチャするためのオプション
この制限を克服するために、いくつかのオプションが利用可能です。
例: 実行ループと分割
次に、実行ループを使用してネストされたグループをキャプチャして分割する例を示します:
var text = "a;b;<c;d;e;f>;g;h;i;<no no no>;j;k;<xx;yy;zz>"; var r = /<(\w+(;\w+)*)>/g; var match; while ((match = r.exec(text)) != null) { print(match[1].split(";")); } // Output: // ["c", "d", "e", "f"] // ["xx", "yy", "zz"]
この例では、ネストされたグループがグループ 1 としてキャプチャされ、セミコロン区切り文字で分割されます。
関連質問
以上が繰り返される JavaScript Regex で複数のグループをキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。