gpt4 book ai didi

javascript - 为什么这个正则表达式也匹配非捕获组中的单词?

转载 作者:数据小太阳 更新时间:2023-10-29 05:12:11 26 4
gpt4 key购买 nike

我有这个字符串(注意多行语法):

var str = `   Number One: Get this
Number Two: And this`;

我想要一个返回(使用 match)的正则表达式:

[str, 'Get this', 'And this']

所以我尝试了 str.match(/Number (?:One|Two): (.*)/g);但结果是:

["Number One: Get this", "Number Two: And this"]

在任何 “Number” 单词之前可以有任何空格/换行符。

为什么它不只返回捕获组内部的内容?我误解了什么吗?我怎样才能达到预期的结果?

最佳答案

根据 the MDN documentation for String.match :

If the regular expression includes the g flag, the method returns an Array containing all matched substrings rather than match objects. Captured groups are not returned. If there were no matches, the method returns null.

(强调我的)。

所以,你想要的是不可能的。

同一页添加:

  • if you want to obtain capture groups and the global flag is set, you need to use RegExp.exec() instead.

因此,如果您愿意放弃使用 match,您可以编写自己的函数来重复应用正则表达式、获取捕获的子字符串并构建一个数组。


或者,对于您的具体情况,您可以这样写:

var these = str.split(/(?:^|\n)\s*Number (?:One|Two): /);
these[0] = str;

关于javascript - 为什么这个正则表达式也匹配非捕获组中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30447905/

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