me_edu
Регулярные выражения (RegEx)Шаг 16 из 27 · 0% пройдено
Квантификаторы · Квантификаторы

Жадность квантификаторов

По умолчанию квантификаторы жадные: они захватывают как можно больше символов. Это иногда приводит к неожиданным результатам.

Представьте текст: <b>жирный</b> и шаблон <.+>. Жадный .+ захватит всё от первого < до последнего >, то есть «<b>жирный</b>» целиком, а не только «<b>».

Чтобы квантификатор брал минимум, после него ставят ? — это делает его ленивым (нежадным):

<.+?> — возьмёт минимально: «<b>», потом «</b>»

Сравните на «<b>жирный</b>»: • <.+> (жадный) → одно совпадение «<b>жирный</b>»; • <.+?> (ленивый) → два совпадения «<b>» и «</b>».

Правило: ? после * + или {} включает ленивый режим. Жадность — частый источник ошибок у новичков: шаблон «хватает» больше, чем нужно. Если совпадение оказалось слишком длинным — попробуйте сделать квантификатор ленивым или сузить класс символов (например, [^>]+ вместо .+ — «всё, кроме закрывающей скобки»).

Назад

Обсуждение

Войдите, чтобы участвовать в обсуждении.

Пока нет сообщений.