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

标签 raku

在 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 ...>相同,尽管前瞻性不太明显(这就是为什么我建议使用 <?before ...> 形式)。

基本上,<?anything>anything进入积极的展望,并且<.anything>是非捕获子规则调用。自 before已经是前瞻性的,两种形式都没有捕获,它们的行为相同。

关于raku - <.before ...> 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49046334/

相关文章:

variables - 如何在用户定义的字符类中插入变量?

raku - 有没有办法从 Perl6 模块代码中的 META6.json 获取版本?

Raku/Perl6 : how do you code a NULL with NativeCall

validation - 如何在 Perl 6 中定义 Int 的 Arrayreference 的自定义类型?

c++ - Raku 中 C++ 和 NativeCall 之间的输出不同

raku - 文件 ctime 在 perl 5 和 perl 6 下不同

perl - Raku(以前称为 Perl 6)值得学习吗?

raku - 为什么我的 promise (启动 block )中的所有 shell 进程都没有运行? (这是一个错误吗?)

raku - 从字符串解析并转换为 float 、整数 (Raku)

arrays - 克隆多维数组