的意义是什么 ?

问题描述 投票:2回答:1

在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 ... >来区分积极和消极的前瞻?

perl6
1个回答
7
投票

<.before ...><?before ...>相同,但前瞻性不太明显(这就是我推荐使用<?before ...>形式的原因)。

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

© www.soinside.com 2019 - 2024. All rights reserved.