Курс языка программирования Raku / Регулярные выражения и грамматики / Регулярные выражения / Утверждения просмотра / Exercises / За чем не следует

Решение: За чем не следует

Вот один из возможных вариантов решения задачи.

Код

say so '50 dollars' ~~ / \d+ >> <!before '%'> /;

🦋 Исходный код можно найти в файле not-followed.raku.

Вывод

True

Комментарии

  1. <!before '%'> — отрицательный просмотр вперёд: он срабатывает, только если сразу после числа стоит не %.

  2. >> — это граница слова, отмечающая конец числа, и здесь она важна. Без неё жадный \d+ отступил бы назад: в строке 50% off он отдал бы 0 и сопоставил бы только 5, за которой % не следует, — и шаблон ошибочно сработал бы. >> заставляет \d+ взять число целиком, поэтому просмотр вперёд проверяется на настоящем конце. В итоге 50 dollars даёт True, а 50% off правильно даёт False.

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

За чем не следует   |   Между скобками