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