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

What is the meaning of <.before ...>?

在 Perl 6 中,正则表达式中的 <.before ... > 是什么意思? 好像和<?before ... >:

一样的意思
my $str = "Hello";
$str ~~ /<alpha> <?before 'o'>/;
say $/;
$str ~~ /<alpha> <.before 'o'>/;
say $/;

输出:

「l」
 alpha => 「l」
「l」
 alpha => 「l」

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

<.before ...><?before ...> 相同,但 look-ahead 不太明显(这就是为什么我建议使用 <?before ...> 形式)。

基本上,<?anything>anything变成了一个正向的look-ahead,而<.anything>是一个non-capturing子规则调用。由于 before 已经是一个 look-ahead,并且两种形式都没有捕获,因此它们的行为相同。