标签: javascript regex
在我的Chrome控制台中,我尝试了这个:
> "abcd".match(/(.+)+/) < ["abcd", "abcd"]
match返回两个'结果'的事实对我来说是意外和奇怪的。我在Firefox中测试过,结果是一样的(所以我认为它不是任何类型的bug)。
match
然而,在Python中:
> re.findall(r'(.+)+', 'abba') < ['abba']
我无法解释这一点。发生了什么事?
答案 0 :(得分:2)
我认为在javascript中,.match给出了组0(整个匹配的表达式没有捕获)以及组1(捕获的组),而python的findAll表现不同 - 显示只捕获的组,而不是整个匹配的部分(第0组)
答案 1 :(得分:2)
根据MDN:
如果正则表达式不包含g标志,则返回与regexp.exec(string)相同的结果。
来自exec:
返回的数组将匹配的文本作为第一项,然后 每个捕获括号的一个项目匹配包含 被捕获的文字。
因此返回数组中的第一项是匹配项("abcd"),第二项是唯一的括号组(恰好也是"abcd")。
"abcd"