Курс Raku / Регулярні вирази та граматики / Регулярні вирази / Квантифікатори / Вправи / Від двох до чотирьох цифр

Розв’язання: Від двох до чотирьох цифр

Ось один із можливих варіантів розв’язання задачі.

Код

say 'abc12345' ~~ / \d ** 2..4 /;

🦋 Вихідний код можна знайти у файлі two-to-four-digits.raku.

Вивід

「1234」

Коментарі

  1. \d ** 2..4 збігається з двома-чотирма цифрами поспіль.

  2. У рядку є п’ять доступних цифр, але діапазон обмежує збіг чотирма, тож шаблон бере 1234 і лишає останню 5. Будучи жадібним, він бере найбільше з дозволеного діапазоном, а не найменше.

  3. Жадібність діє лише в межах одного збігу — механізм усе одно зупиняється на першому місці, де шаблон вдається. Навіть якщо далі в рядку є довша послідовність цифр, до неї він так і не доходить:

    say 'abc123def6789012z' ~~ / \d ** 2..4 /;   # 「123」

    Тут зіставляється 123, хоча пізніша низка 6789012 заповнила б увесь діапазон, давши 6789. Перемагає найлівіший збіг.

Навігація курсом

Від двох до чотирьох цифр   |   Ощадливий збіг