」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在重複的 JavaScript 正規表示式中捕獲多個群組?

如何在重複的 JavaScript 正規表示式中捕獲多個群組?

發佈於2024-11-26
瀏覽:958

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 只保留每個重複組的最終捕獲。

捕獲多個組的選項

要克服此限制,可以使用以下幾個選項:

  • 按分隔符分割: 如果可能,使用字串分割來分隔所需的內容
  • 執行循環和拆分:使用執行循環重複匹配字串中的模式,並將捕獲的群組拆分為單獨的匹配項。
  • 多層匹配: 捕獲比賽中重複的組,然後使用另一個正則表達式提取個體

示例:Exec 循環和拆分

以下是使用exec 循環捕獲和拆分嵌套組的範例:

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 正規表示式中的配對群組?
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3