环视正则表达式和字符消耗
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
似乎正常工作。
根据 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
似乎正常工作。