环视术语中的“无”[RAKU]

jak*_*kar 5 regex-lookarounds raku

我正在阅读有关“嵌套结构的波浪号”的正则表达式文档。

关于使用的副业解释<?>是:

这里<?>成功匹配了空字符串。

我以为我可以使用<?[]>它来代替它,但它没有这样做!

举个例子:

say so "" ~~ / <?> /;
say so "test" ~~ / <?> /;

say so "" ~~ / <?[]> /;
say so "test" ~~ / <?[]> /;
Run Code Online (Sandbox Code Playgroud)

响应:

True
True

False
False
Run Code Online (Sandbox Code Playgroud)

有人可以给我一个解释吗?

Jon*_*ton 10

语法<?[]>表示匹配空字符类的前瞻。观察到空字符类也永远不会匹配:

say "x" ~~ /<[]>/   # Nil
Run Code Online (Sandbox Code Playgroud)

字符类指定一组可以匹配的字符。空字符类意味着一组空字符,因此不可能匹配任何内容。