Курс 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 тест за змістом цієї теми.

Навігація курсом

Твердження перегляду   |   Тест — Перегляд уперед


💪 Або перейдіть одразу до вправ цього розділу.