Курс языка программирования Raku / Регулярные выражения и грамматики / Регулярные выражения / Квантификаторы

Жадное и экономное сопоставление

По умолчанию квантификатор жаден: он берёт столько, сколько может, лишь бы остальная часть шаблона всё же совпала. Рассмотрим сопоставление от первой < до какой-нибудь >:

say '<a><b>' ~~ / '<' .+ '>' /; # 「<a><b>」

.+ заглотил всё, что смог, вплоть до последней >, поэтому совпадение растянулось на обе пары скобок.

Чтобы сделать квантификатор экономным (его называют также ленивым или нежадным), добавьте после него ?. Экономный квантификатор берёт как можно меньше:

say '<a><b>' ~~ / '<' .+? '>' /; # 「<a>」

Теперь .+? останавливается на первой >, поэтому совпадает только первый кусочек в скобках.

Суффикс ? работает с любым квантификатором: *? и **? тоже экономные. Жадный и экономный варианты сопоставляют один и тот же род текста — они различаются лишь тем, сколько берут, когда есть выбор.

Практика

Пройдите 1 тест по содержанию этой темы.

Навигация по курсу

Квантификатор количества   |   Тест — Квантификаторы


💪 Или перейдите сразу к упражнениям этого раздела.