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

Lookaround regex and character consumption

根据 Raku lookaround assertions 的文档,我读到正则表达式 / <?[abc]> <alpha> / 是说“从左边开始,匹配但不消耗 a 中的一个字符, b,或 c,一旦找到匹配项,匹配并消耗一个字母字符。"

因此,这个输出是有意义的:

'abc' ~~ / <?[abc]> <alpha> /     # OUTPUT: «「a」␤ alpha => 「a」»

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

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

'abc' ~~ / <?[abc\s]> <alpha> /     # OUTPUT: «「ab」␤ alpha => 「b」»

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

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

当添加 \n\s\d\w 时,

<?[abc\s]> 的行为与 <[abc\s]> 相同。

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