Diferença entre tubo único e tubo duplo no Raku Regex (| Vs ||)

9

Existem dois tipos de alternância no regex de Raku: the |e ||. Qual é a diferença ?

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

Respostas:

12
  • O || é o antigo comportamento de alternância: tente alternar do primeiro declarado ao último

  • O | tente alternar do átomo declarativo mais longo para o mais curto . É chamada de estratégia Longest Token Matching Spec .

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

Resposta mais detalhada neste post

Tinmarino
fonte