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

Решение: От две до четири цифри

Ето едно възможно решение на задачата.

Код

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. Печели най-лявото съвпадение.

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

От две до четири цифри   |   Пестеливо съвпадение