Курс по 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.

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

Не е последвано от   |   Между скоби