Курс Raku / Регулярні вирази та граматики / Граматики / Токени та правила / Вправи / regex проти token
Розв’язання: regex проти token
Ось одне з можливих розв’язань задачі.
Код
my regex r { \d+ '5' }
my token t { \d+ '5' }
say so '12345' ~~ / <r> /;
say so '12345' ~~ / <t> /;🦋 Знайдіть програму у файлі token-instead.raku.
Вивід
True
FalseКоментарі
У
regex\d+спершу захоплює все12345, а потім відкочується — віддає останню5, щоб літеральна5могла зіставитися. Тож регекс спрацьовує.tokenвідмовляється щось віддавати:\d+залишає собі все12345, літеральній5не залишається нічого, і токен зазнає невдачі. Саме ця поведінка без відкочування й робитьtokenправильним типовим вибором усередині граматик.