Курс языка программирования Raku / Регулярные выражения и грамматики / Регулярные выражения / Утверждения просмотра / Exercises / За чем не следует
Решение: За чем не следует
Вот один из возможных вариантов решения задачи.
Код
say so '50 dollars' ~~ / \d+ >> <!before '%'> /;🦋 Исходный код можно найти в файле not-followed.raku.
Вывод
TrueКомментарии
<!before '%'>— отрицательный просмотр вперёд: он срабатывает, только если сразу после числа стоит не%.>>— это граница слова, отмечающая конец числа, и здесь она важна. Без неё жадный\d+отступил бы назад: в строке50% offон отдал бы0и сопоставил бы только5, за которой%не следует, — и шаблон ошибочно сработал бы.>>заставляет\d+взять число целиком, поэтому просмотр вперёд проверяется на настоящем конце. В итоге50 dollarsдаётTrue, а50% offправильно даётFalse.