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