Курс языка программирования Raku / Регулярные выражения и грамматики / Регулярные выражения / Квантификаторы / Exercises / От двух до четырёх цифр
Решение: От двух до четырёх цифр
Вот один из возможных вариантов решения задачи.
Код
say 'abc12345' ~~ / \d ** 2..4 /;🦋 Исходный код можно найти в файле two-to-four-digits.raku.
Вывод
「1234」Комментарии
\d ** 2..4соответствует от двух до четырёх цифр подряд.В строке доступно пять цифр, но диапазон ограничивает совпадение четырьмя, поэтому шаблон берёт
1234, оставляя последнюю5. Будучи жадным, он берёт максимум из разрешённого диапазоном, а не минимум.Жадность действует только внутри одного совпадения — движок всё равно останавливается на первом месте, где шаблон срабатывает. Даже если дальше в строке есть более длинная последовательность цифр, до неё дело не доходит:
say 'abc123def6789012z' ~~ / \d ** 2..4 /; # 「123」
Здесь совпадает
123, хотя более поздняя вереница6789012заполнила бы весь диапазон, дав6789. Побеждает самое левое совпадение.