JavaScript“匹配”行为

JavaScript“匹配”行为,javascript,regex,Javascript,Regex,在我的Chrome控制台中,我尝试了以下方法: > "abcd".match(/(.+)+/) < ["abcd", "abcd"] 我无法解释这一点。发生了什么事?我认为在javascript中,.match给出了组0(不包含捕获的完整匹配表达式)和组1(捕获组),而python的findAll行为不同——只显示捕获的组,而不是完整匹配的部分(组0)我认为在javascript中,.match给出了组0(不包含捕获的完整匹配表达式)以及组1(捕获组),而python的find

在我的Chrome控制台中,我尝试了以下方法:

>  "abcd".match(/(.+)+/)
<  ["abcd", "abcd"]

我无法解释这一点。发生了什么事?

我认为在javascript中,.match给出了组0(不包含捕获的完整匹配表达式)和组1(捕获组),而python的findAll行为不同——只显示捕获的组,而不是完整匹配的部分(组0)

我认为在javascript中,.match给出了组0(不包含捕获的完整匹配表达式)以及组1(捕获组),而python的findAll行为不同——仅显示捕获的组,而不显示完整匹配的部分(组0)

根据:

如果正则表达式不包含g标志,则返回与regexp.exec(字符串)相同的结果

和来自:

返回的数组将匹配的文本作为第一项,然后 每个捕获括号对应一个项目,该括号匹配包含 捕获的文本

因此,返回数组中的第一项是匹配项(
“abcd”
),第二项是唯一一个括号中的组(碰巧也是
“abcd”
)。

根据:

如果正则表达式不包含g标志,则返回与regexp.exec(字符串)相同的结果

和来自:

返回的数组将匹配的文本作为第一项,然后 每个捕获括号对应一个项目,该括号匹配包含 捕获的文本


因此,返回数组中的第一项是匹配项(
“abcd”
),第二项是唯一一个括号中的组(碰巧也是
“abcd”
)。

它与捕获组有关。它与捕获组有关。哦!我明白了。有意义:)我添加了
g
标志,结果只有一个。@Abody97“如果正则表达式包含g标志,该方法将返回一个包含所有匹配项的数组。”(分组时未返回任何内容)哦!我懂了。有意义:)我添加了
g
标志,结果只有一个。@Abody97“如果正则表达式包含g标志,则该方法返回一个包含所有匹配项的数组。”(分组返回的任何内容)与chrome无关。这就是String.match的工作原理。对不起,卡萨波!我之前的comment.np ithcy和@jbabey都错了,你当然是对的,我的误导性陈述也被纠正了——我现在引用javascript的行为方式是这样的,而不是浏览器。与chrome无关。这就是String.match的工作原理。对不起,卡萨波!我之前的comment.np ithcy和@jbabey都错了,你当然是对的,我的误导性陈述已经被纠正了——我现在引用javascript的行为方式是这样的,而不是浏览器。
>  re.findall(r'(.+)+', 'abba')
<  ['abba']