环视正则表达式和字符消耗

cod*_*ons 7 regex rakudo regex-lookarounds raku

基于为乐的文档上环视断言,我读的正则表达式/ <?[abc]> <alpha> /的话说,“从左边,比赛开始,但不不消耗一个字符是abc和,一旦你找到了一个匹配,匹配和使用一个字母字符。 ”

因此,这个输出是有道理的:

'abc' ~~ / <?[abc]> <alpha> /     # OUTPUT: «?a?? alpha => ?a?»
Run Code Online (Sandbox Code Playgroud)

尽管该正则表达式有两个单字符术语,但其中一个没有捕获,因此我们的总捕获只有一个字符长。

但下一个表达让我感到困惑:

'abc' ~~ / <?[abc\s]> <alpha> /     # OUTPUT: «?ab?? alpha => ?b?»
Run Code Online (Sandbox Code Playgroud)

现在,我们的总捕获长度为两个字符,其中之一未被<alpha>. 那么环视到底是不是捕捉到了一些东西?还是我对环视的工作方式有其他误解?

Mar*_*rot 3

<?[ ]>并且<![ ]>似乎不支持某些反斜杠字符类。\n\s\d\w显示类似的结果。

<?[abc\s]>行为与添加、、或<[abc\s]>时相同。\n\s\d\w

\t\h\v\c[NAME]似乎\x61工作正常。