gpt4 book ai didi

raku - 在 Perl 6 中访问匹配部分

转载 作者:行者123 更新时间:2023-12-05 00:49:46 25 4
gpt4 key购买 nike

当我使用命名的正则表达式时,我可以打印其内容:

my regex rgx { \w\w };
my $string = 'abcd';

$string ~~ / <rgx> /;
say $<rgx>; # 「ab」

但是如果我想匹配 :g:ex副词,所以有不止一场比赛,这是行不通的。下列

my regex rgx { \w\w };
my $string = 'abcd';

$string ~~ m:g/ <rgx> /;
say $<rgx>; # incorrect

给出一个错误:

Type List does not support associative indexing.
in block <unit> at test1.p6 line 5

我应该如何修改我的代码?

更新:基于@piojo 的 explanation ,我修改了最后一行,解决了我的问题:

say $/[$_]<rgx> for ^$/.elems;

以下会更容易,但由于某种原因它不起作用:

say $_<verb> for $/; # incorrect

最佳答案

好像:g:overlap是特殊情况:如果您的匹配在正则表达式中重复,例如 / <rgx>* / ,那么您将访问匹配项 $<rgx>[0] , $<rgx>[1]等等。但在这种情况下,引擎不止一次地完成整个匹配。因此,您可以通过顶级匹配运算符 $/ 访问这些匹配项。 .事实上,$<foo>只是 $/<foo> 的快捷方式.

所以根据错误信息,我们知道在这种情况下,$/是一个列表。所以我们可以访问您的匹配项 $/[0]<rgx>$/[1]<rgx> .

关于raku - 在 Perl 6 中访问匹配部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47030946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com