我对正则表达式和贪婪与非贪婪模式有些困惑。感觉应该很简单,但好像我漏掉了什么显而易见的东西。
为了让问题更清晰,我把它简化了。请考虑以下字符串和正则表达式模式:
string:
aaxxxb
pattern:
(?<=a)(.*?)(?=b)
result:
axxx
what I expected:
xxx
这个结果是使用 .* 而不是 .*? 的预期结果,我错过了什么吗?
显然,如果我使用 a.*?b,那么会得到 aaxxxb。为什么会这样?应该是懒惰匹配(如 .*?)尽可能少地返回字符,对吗?