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

正则表达式匹配末尾短语求助:独立捕获可选'on court 1'

解决正则捕获组匹配错位问题

我明白你的问题了——当前正则里的venue捕获组因为用了贪婪的.*,会把末尾的on court 1也一起吞掉,而你希望venue只匹配at New Albany High School,把on court 1留给location组。

问题根源

原正则中(?<venue>.*)?的.*是贪婪匹配,它会尽可能匹配所有剩余字符,哪怕后面还有可选的location捕获组,正则引擎也会优先把内容全部分配给venue,导致location组无法捕获到目标内容。

修改后的正则

我们可以给venue的匹配加上边界限制,让它在遇到on 或者字符串结尾时停止,这样就能把后续的on court 1留给location组:

^(?<minimum>\d*)(?<dash>-)?(\sor\s(?<moreless>more|less)\s?)?(?<maximum>\d*)((?:on\s|\s)+(?<date>[^\s]*)?)?((?:at\s|\s){1}(?<venue>.*?(?=\son\s|$))?)?((?:on\s|\s){1}(?<location>.*)?)?

关键调整点

把原正则中venue部分的(?<venue>.*)?改成了(?<venue>.*?(?=\son\s|$))?:

  • .*?:非贪婪匹配,尽可能少的匹配字符
  • (?=\son\s|$):正向预查,匹配到on (前面带空格)或者字符串结尾时停止,确保venue不会包含后续的location前缀内容

测试验证

比如输入字符串at New Albany High School on court 1:

  • venue组会捕获到New Albany High School
  • location组会捕获到court 1

如果输入没有on court 1,比如at New Albany High School,venue组也能正常捕获完整的场地内容,location组为空,符合预期。

内容的提问来源于stack exchange,提问作者Mike Flynn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:36:45