编辑:@ikegami 是第一个回应并指出我的错字的人。
\nraku正则表达式文档说:
\n\n\n要匹配任何单词边界,请使用 <|w> 或 <?wb>。这类似于其他语言中的 \\b。
\n
这是我在 rakudo 中看到的:
\n[309] > "apa pz" ~~ / <|wb> p. /\n\xef\xbd\xa2pa\xef\xbd\xa3\n\n[310] > "apa pz" ~~ / <?wb> p. /\n\xef\xbd\xa2pz\xef\xbd\xa3\nRun Code Online (Sandbox Code Playgroud)\n<?wb>行为符合我的预期。在<|wb>做什么?
在 Perl 中:
\n"apa pz" =~ / \\b p. /xms; \nsay $&; # pz\nRun Code Online (Sandbox Code Playgroud)\n
<?wb>做你想做的事。<|wb>和<|w>IIUC 都是不受支持的语法,应该引发错误。事实上,它们都使用即将发布的 Raku AST 编译器前端:
$ RAKUDO_RAKUAST=1 raku -e 'say "apa pz" ~~ / <|w> p. /'
> ===SORRY!===
> Cannot find method 'apply-sink' on object of type NQPMu
Run Code Online (Sandbox Code Playgroud)
<|更正式地说, Roast(Raku 的测试套件/规范)中没有指定以 开头的正则表达式语法。
(当然,这意味着文档引用<|w>语法是错误的;我提交了带有修复的 PR)。