Não é a correspondência mais curta possível, apenas uma correspondência curta. Modo Greedy tenta encontrar a última correspondência possível, modo preguiçoso a primeira correspondência possível. Mas a primeira correspondência possível não é necessariamente a mais curta.
Pegue a string de entrada foobarbaz e o regexp o.*a (greedy) ou o.*?a (lazy).
A correspondência mais curta possível nesta string de entrada seria oba .
No entanto, o RegExp procura correspondências da esquerda para a direita, portanto, o o encontra o primeiro o em foobarbaz . E se o resto do padrão produzir uma correspondência, é onde fica.
Após o primeiro o , .* (ganancioso) come obarbaz (a string inteira) e depois retrocede para corresponder ao restante do padrão ( a ). Assim, ele encontra o último a em baz e acaba combinando com oobarba .
Após o primeiro o , .*? (lazy) não come a string inteira, em vez disso, procura a primeira ocorrência do resto do padrão. Primeiro, ele vê o segundo o , que não corresponde a a , depois vê b , que não corresponde a a , depois vê a , que corresponde a a , e porque é preguiçoso é onde ele pára. (e o resultado é ooba , mas não oba )
Portanto, embora não seja O mais curto possível, é mais curto do que a versão gulosa.