<.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,并且两种形式都没有捕获,因此它们的行为相同。
在 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,并且两种形式都没有捕获,因此它们的行为相同。