<.before ...>是什么意思?

Håk*_*and 2 perl6 raku

在Perl 6中,<.before ... >正则表达式的含义是什么?它似乎意味着<?before ... >:

my $str = "Hello";
$str ~~ /<alpha> <?before 'o'>/;
say $/;
$str ~~ /<alpha> <.before 'o'>/;
say $/;
Run Code Online (Sandbox Code Playgroud)

输出:

?l?
 alpha => ?l?
?l?
 alpha => ?l?
Run Code Online (Sandbox Code Playgroud)

我想澄清一下,因为我看到了一些使用的代码,<.before ...>我不确定它是什么意思.它可能是非法的语法,或者它可能意味着负面的前瞻<!before ...>或积极的前瞻<?before ...>或其他.我知道我可以<alpha>通过在它前面放一个点来制定像非捕获这样的规则<.alpha>,但是对于我来说,因为它们总是无法捕获而对前瞻没有意义.在任何情况下,它应该写<.?before ... ><.!before ... >区分正面和负面的前瞻?

mor*_*itz 7

<.before ...>是相同的<?before ...>,虽然不太明显的前瞻(这就是我推荐使用<?before ...>表格的原因).

基本上,<?anything>变成anything一个积极的前瞻,并且<.anything>是一个非捕获子规则调用.由于before已经是先行,并且两种形式都没有捕获,因此它们的行为相同.