Raku Regex 中单管道和双管道的区别(| Vs ||)

Difference between single pipe and double pipe in Raku Regex (| Vs ||)

Raku 的正则表达式中有两种交替类型:|||。有什么区别?

say 'foobar' ~~ / foo || foobar /  # 「foo」
say 'foobar' ~~ / foo | foobar /   # 「foobar」
  • || 是旧的交替行为:尝试从第一个声明到最后一个声明的交替

  • | try alternation from the longest to the shortest declarative atom. It is called the Longest Token Matching Spec 策略。

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

更详细的答案在此