gpt4 book ai didi

javascript - 如何在具有多个匹配项的 JavaScript RegEx 中仅返回捕获的组

转载 作者:可可西里 更新时间:2023-11-01 01:49:23 25 4
gpt4 key购买 nike

简化示例:

/not(?:this|that)(.*?)end/ig.exec('notthis123end notthat45end')

返回

["notthis123end", "123"]

我正在拍摄

["123", "45"]

我所想到的就是将 RE 放在 RegExp 对象中并在 exec 周围运行 while 循环,这看起来有点傻,或者使用 匹配,但返回整个匹配,而不仅仅是捕获的部分。

最佳答案

您的正则表达式似乎运行良好。问题在于对输出的解释。

  1. 要获得 RegEx 的多个匹配项,您应该这样做,就像这样

    var regEx = /not(?:this|that)(.*?)end/ig;
    var data = "notthis123end notthat45end";
    var match = regEx.exec(data);

    while(match !== null) {
    console.log(match[1]);
    match = regEx.exec(data);
    }

    注意:将 RegEx 存储在这样的变量中并使用循环很重要。因为,为了获得多个匹配项,JavaScript RegEx 实现将匹配项的当前索引存储在 RegEx 对象本身中。因此,下次 exec 被调用时,它会从它离开的地方开始。如果我们按原样使用 RegEx 文字,那么我们将陷入无限循环,因为它总是从头开始。

  2. result of exec方法必须这样解释,第一个值是整个匹配项,下一个元素向前我们得到匹配项内的组。在这个正则表达式中,我们只有一组。因此,我们使用 match[1] 访问它。

关于javascript - 如何在具有多个匹配项的 JavaScript RegEx 中仅返回捕获的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22581979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com