根据Raku's look - around断言的文档,我将正则表达式/ <?[abc]> <alpha> /
读为"从左边开始,匹配但不消耗a
,b
或c
中的一个字符,一旦找到匹配,匹配并消耗一个字母字符"。
因此,这个输出是有意义的:
'abc' ~~ / <?[abc]> <alpha> / # OUTPUT: «「a」 alpha => 「a」»
尽管正则表达式有两个单字符项,但其中一个不捕获,因此我们捕获的总长度只有一个字符。
但下一个表达让我困惑:
'abc' ~~ / <?[abcs]> <alpha> / # OUTPUT: «「ab」 alpha => 「b」»
现在,我们的总捕获是两个字符长,其中一个没有被<alpha>
捕获。那么环顾四周到底有没有捕捉到什么呢?还是我误解了周围的工作方式?
<?[ ]>
和<![ ]>
似乎不支持某些反斜杠字符类。n
、s
、d
和w
结果相似。
n
、s
、d
或w
时,<?[abcs]>
的行为与<[abcs]>
相同。
t
,h
,v
,c[NAME]
和x61
似乎工作正常。