非贪婪匹配(也称为懒惰匹配或最小匹配)是指在正则表达式中使用量词时,尽可能少地匹配字符。默认情况下,正则表达式的量词是贪婪的,会尽可能多地匹配字符。
例如,考虑以下示例字符串:
abbbbbbbcd
和正则表达式:"a.*?d"
:如果我们使用贪婪匹配,即 a.*d
,它将匹配整个字符串 abbbbbbbcd
。但如果我们使用非贪婪匹配,即 a.*?d
,它将只匹配abcd
部分。
注意到,在量词*
后面添加?
就可以实现非贪婪匹配。这样,正则引擎会尽可能少地匹配字符,直到满足后续的模式或条件。
非贪婪匹配通常在需要精确匹配某一部分文本时很有用,以避免过度匹配。