【发布时间】:2014-04-19 22:07:17
【问题描述】:
我对正则表达式和贪婪与懒惰有点困惑。这真的很简单,感觉就像我错过了一些明显的东西。
我已经尽可能地简化了我的问题以使其清楚。考虑以下字符串和正则表达式模式。
string:
aaxxxb
pattern:
(?<=a)(.*?)(?=b)
result:
axxx
what I expected:
xxx
这个结果是我使用 .* 而不是 .* 所期望的结果?我错过了什么?
显然,如果我使用 a.*?b 也会得到 aaxxxb。为什么是这样?不应该惰性(如 .*?)返回尽可能少的字符吗?
【问题讨论】:
-
仅供参考,完全相同的问题是几天前的already asked here(提供了答案,但没有标记为已接受,因此不要将其标记为重复)
-
另外,从SO regex FAQ,你可以看出懒惰和贪婪的区别discussed more in depth
标签: regex