Что делает этот вопрос особенно интересным, так это то, что бывают раза, когда .{2,}?
эквивалентно .{2}
, но это никогда не должно происходить. Другие уже указали, как неохотный квантификатор в самом конце регулярного выражения всегда соответствует минимальному количеству символов, потому что после него нет ничего, что заставляло бы его потреблять больше.
Другое место, где их не следует использовать, находится в конце подвыражения внутри атомной группы . Например, предположим, что вы пытаетесь сопоставить foo bar
с
f(?>.+?) bar
Подвыражение первоначально потребляет первое 'o' и передает следующую часть, которая безуспешно пытается найти пробел. Без атомарной группы она вернулась бы назад и позволила бы .+?
потреблять другой символ. Но он не может вернуться в атомарную группу, и у него нет комнаты для маневра до группы, поэтому попытка совпадения не удалась.
Нежелательный квантификатор в конце регулярного выражения или в конце атомного подвыражения - это определенный запах кода.