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

正则表达式中d+?/与d+/的区别是什么?

正则表达式中+?的作用:贪婪与非贪婪匹配的区别

核心差异

  • d+是贪婪匹配:会尽可能多地匹配符合d规则的字符,直到无法继续匹配,再尝试匹配后续的/。
  • d+?是非贪婪(惰性)匹配:会尽可能少地匹配符合d规则的字符,只要能让后续的/匹配成功就立即停止。

你的测试案例结果一致的原因

你用的测试字符串是dddddddddedd/,末尾的/前面只有连续两个d:

  • 贪婪模式d+/扫描时,会尝试匹配尽可能多的d,但最后能和/衔接的连续d只有末尾这两个,所以最终匹配dd/。
  • 非贪婪模式d+?/先匹配1个d,检查后发现不是/,就多匹配1个d,此时后面正好是/,于是停止匹配,结果也是dd/。

换个例子看明显差异

如果测试字符串换成dddd/:

  • 用d+/匹配(贪婪):d+会把所有4个d都匹配到,再加上后面的/,最终结果是dddd/。
  • 用d+?/匹配(非贪婪):d+?只匹配1个d,就发现后面是/,直接停止,最终结果是d/。

再比如字符串dd/ddd/(开启全局匹配):

  • d+/会匹配dd/和ddd/,每段都取尽连续的d后再匹配/。
  • d+?/会匹配dd/和d/,第二段里只拿1个d就遇到/,直接停止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:33:23