You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式匹配连续两个大写开头单词的问题求助

解决连续大写首词词组的重叠匹配问题

你的问题出在原正则的字符消耗机制上:([A-Z][a-z]+\s?){2}匹配时会把匹配到的字符直接消耗掉,所以匹配完「Expedition Runic」后,后续匹配的起点直接跳到了「Monster」,自然就跳过了「Runic Monster」这一组。

要实现重叠匹配,得用零宽度正向预查来避免消耗字符,推荐使用这个正则:

(?=([A-Z][a-z]+\s[A-Z][a-z]+))

效果说明

针对字符串「Expedition Runic Monster Markers」,开启全局匹配后,这个正则会从捕获组1中提取出三组结果:

  • Expedition Runic
  • Runic Monster
  • Monster Markers

原理

正向预查(?=...)是零宽度断言,它只会检查当前位置后面是否符合匹配规则,不会移动正则的匹配指针,也不会消耗字符。所以匹配完第一组后,指针会回到「Runic」的开头,继续检查后续是否符合两个大写首词的规则,以此实现连续的重叠匹配。

注意事项

不同语言/工具里的使用细节略有不同:

  • Python中,需要用re.finditer遍历所有匹配结果,再提取每个结果的group(1)
  • JavaScript中要加上g全局标志,然后通过循环获取所有捕获组内容

内容的提问来源于stack exchange,提问作者Felipe Gomez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:10:29