Курс языка программирования Raku / Регулярные выражения и грамматики / Регулярные выражения / Альтернативы
Самый длинный токен и первое совпадение
Когда в одном и том же месте могли бы совпасть сразу два варианта,
оператор | выбирает тот, который сопоставляет самый
длинный кусок текста. Это называется сопоставлением по
самому длинному токену:
say 'catdog' ~~ / cat | catdog /; # 「catdog」Хотя cat записан первым и подошёл бы, |
предпочитает более длинное catdog.
Иногда нужно обратное — перебрать варианты в том порядке, в каком вы
их записали, и взять первый подошедший. Именно это
делает двойная черта ||:
say 'catdog' ~~ / cat || catdog /; # 「cat」Теперь cat пробуется первым и совпадает, поэтому движок
на нём и останавливается, так и не дойдя до catdog.
Используйте | (самый длинный токен), когда вам нужно
«лучшее» совпадение независимо от порядка, — это обычный выбор, и именно
на нём держатся грамматики. Используйте || (первое
совпадение), когда порядок вариантов осмыслен и вы хотите, чтобы
побеждали более ранние.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Тест — Группировка | Тест — Альтернативы →
💪 Или перейдите сразу к упражнениям этого
раздела.