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

如何修改正则表达式实现多匹配而非单一匹配?

解决正则贪婪匹配导致单一结果的问题

这问题我太懂了!你当前用的正则/\{\d+\}.*/g里,.*是贪婪匹配——它会尽可能多地抓取字符,从第一个{1}开始直接吃到字符串末尾,自然就把整个内容当成一个匹配项了。要拿到两个匹配结果,得限制它的匹配范围,这里有两种靠谱的调整方案:

方案1:使用非贪婪匹配+正向预查

把正则改成:

/\{\d+\}.*?(?=\{\d+\}|$)/g

拆解一下关键部分:

  • .*?:非贪婪版本的任意字符匹配,会尽可能少地抓取内容,直到遇到后面的停止条件
  • (?=\{\d+\}|$):正向预查,告诉正则“匹配到下一个{数字}或者字符串结尾就停下来”

用你的测试字符串{1}I still don't know what I was{1} waiting for And my测试,会得到两个匹配结果:

  • {1}I still don't know what I was
  • {1} waiting for And my

方案2:使用字符集限制匹配范围

如果你的场景里,匹配内容不会包含{字符,也可以用更简洁的写法:

/\{\d+\}[^{]*/g

这里[^{]*表示匹配任意非{的字符,直到遇到{或者字符串结束,完美避开贪婪匹配的问题,结果和方案1一致。

你可以根据自己的实际场景选其中一种,两种都能解决你的问题~

内容的提问来源于stack exchange,提问作者Thomas Vermaercke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:30:39