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

tin*_*ino 9 raku nqp

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

say 'foobar' ~~ / foo || foobar /  # ?foo?
say 'foobar' ~~ / foo | foobar /   # ?foobar?
Run Code Online (Sandbox Code Playgroud)

tin*_*ino 12

  • || 是旧的交替行为:尝试从第一个声明到最后一个交替

  • | 尝试从最长到最短的声明性原子交替。它被称为最长令牌匹配规范策略。

say 'foobar' ~~ / foo || foobar /  # ?foo? is the first declared
say 'foobar' ~~ / foo | foobar /   # ?foobar? is the longest token
Run Code Online (Sandbox Code Playgroud)

这篇文章中有更详细的答案