繰り返される JavaScript Regex で複数のグループをキャプチャするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-13 10:33:02
オリジナル
593 人が閲覧しました

How to Capture Multiple Groups in a Repeated JavaScript Regex?

JavaScript 正規表現での任意のグループのキャプチャ

JavaScript 正規表現でグループのキャプチャを使用する場合は、制限を理解することが重要です。デフォルトでは、グループがネストされている場合でも、繰り返しグループの最後のキャプチャのみが保持されます。

例: ネストされたキャプチャ グループ

次の正規表現を考えてみましょう。

/^(\s*\w+)+$/
ログイン後にコピー

期待される出力:

["foo bar baz", "foo", " bar", " baz"]
ログイン後にコピー

実際の出力:

["foo bar baz", " baz"]
ログイン後にコピー

この場合、最後にキャプチャされたグループ「 baz」のみが返されます。これは、JavaScript が各繰り返しグループの最終キャプチャのみを保持するためです。

複数のグループをキャプチャするためのオプション

この制限を克服するために、いくつかのオプションが利用可能です。

  • 区切り文字で分割: 可能であれば、文字列分割を使用して目的のセグメントを分割します。
  • 実行ループと分割: 実行ループを使用して、文字列内のパターンと繰り返し照合し、キャプチャされたグループを個々の一致に分割します。
  • マルチレベル マッチング: 1 つの一致で繰り返されたグループをキャプチャし、別の正規表現を使用して個々のセグメントを抽出します。

例: 実行ループと分割

次に、実行ループを使用してネストされたグループをキャプチャして分割する例を示します:

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 正規表現内の一致するグループ?

以上が繰り返される JavaScript Regex で複数のグループをキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート