【发布时间】:2014-01-21 18:20:49
【问题描述】:
问题:我有一个字符串,例如:"to see to be to read",我想捕捉 3 个动词 没有“to”前缀,在这种情况下: be、see 和 read。
在 Regex 101 上,我尝试了 this really simple regex 并解决了问题:
正则表达式:/to (\w+)/g
结果: ['be', 'see', 'read']
出于好奇,我使用正向前瞻方式制作了this another regex,结果是一样的。
正则表达式:/(?=to \w+)\w+ (\w+)/g
结果: ['be', 'see', 'read']
好的。奇怪的是:当我在 Browser Console(Chrome 或 Firefox)上运行这个正则表达式时,结果是不同的。以下两次尝试给了我相同的结果:所有三个组包括 to 前缀。
> 'to be to see to read'.match(/to (\w+)/g)
["to be", "to see", "to read"]
> 'to be to see to read'.match(/(?=to \w+)\w+ (\w+)/g)
["to be", "to see", "to read"]
我是在这里遗漏了什么还是踩到了错误?
免责声明:这不是家庭作业,我只是在验证一个更大的问题。我不是正则表达式专家,但知道一两件事。
编辑:我想我被 Regex101 愚弄了。它给我的代码示例显示了String#match() 方法,但此函数不会在结果组中相应地排除正则表达式组。循环遍历RegExp#exec() 匹配是要走的路!
【问题讨论】:
标签: javascript regex capturing-group