Разница между одинарной и двойной трубой в Raku Regex (| Vs ||)

В регулярном выражении Раку есть два типа чередования: | а также ||. В чем разница?

say 'foobar' ~~ / foo || foobar /  # 「foo」
say 'foobar' ~~ / foo | foobar /   # 「foobar」

1 ответ

Решение
  • || это старое поведение чередования: попробуйте чередование от первого объявленного до последнего

  • | попробуйте чередование от самого длинного декларативного атома к самому короткому. Это называется стратегией определения соответствия самого длинного токена.

say 'foobar' ~~ / foo || foobar /  # 「foo」 is the first declared
say 'foobar' ~~ / foo | foobar /   # 「foobar」 is the longest token

Более подробный ответ в этом посте

Другие вопросы по тегам