Курс языка программирования Raku / Регулярные выражения и грамматики / Регулярные выражения / Утверждения просмотра
Просмотр вперёд
Просмотр вперёд проверяет, что идёт сразу после текущей позиции. Записывается он в угловых скобках:
<?before …>— срабатывает, если текст впереди совпадает (положительный просмотр вперёд)<!before …>— срабатывает, если текст впереди не совпадает (отрицательный просмотр вперёд)
Само утверждение не сопоставляет ни одного символа; оно лишь
проверяет позицию. Например, сопоставим число только тогда, когда за ним
следует слово dollars:
say '100 dollars' ~~ / \d+ <?before ' dollars'> /; # 「100」Совпадение — только 100: текст dollars был
проверен, но не включён.
Поскольку просмотр вперёд лишь утверждает, что идёт следом, одно и то же число совпадает или нет в зависимости от валюты после него:
say so '100 euro' ~~ / \d+ <?before ' euro'> /; # True
say so '100 dollars' ~~ / \d+ <?before ' euro'> /; # FalseЦифры в обеих строках одинаковые, но утверждение принимает
100 только тогда, когда следом идёт euro.
Отрицательная форма полезна для случаев «… но не тогда, когда следом
идёт …». Сопоставим cat только если за ним
не следует цифра:
say so 'cats' ~~ / cat <!before \d> /; # True
say so 'cat5' ~~ / cat <!before \d> /; # FalseВ cat5 просмотр вперёд видит цифру сразу после
cat, поэтому отрицательное утверждение не срабатывает и всё
сопоставление проваливается.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Утверждения просмотра | Тест — Просмотр вперёд →
💪 Или перейдите сразу к упражнениям этого
раздела.