Курс Raku / Регулярні вирази та граматики / Регулярні вирази / Квантифікатори / Вправи / Від двох до чотирьох цифр
Розв’язання: Від двох до чотирьох цифр
Ось один із можливих варіантів розв’язання задачі.
Код
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. Перемагає найлівіший збіг.