Разница между одинарной и двойной трубой в 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
Более подробный ответ в этом посте