【发布时间】:2017-10-31 08:32:55
【问题描述】:
当我使用命名的正则表达式时,我可以打印它的内容:
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
我应该如何修改我的代码?
UPD:基于@piojo的explanation,我将最后一行修改如下,解决了我的问题:
say $/[$_]<rgx> for ^$/.elems;
以下会更容易,但由于某种原因它不起作用:
say $_<verb> for $/; # incorrect
【问题讨论】:
-
say $_<verb> for $/没有做你想做的事情的原因是使用$/字面意思将被解释为“只循环这里的一个东西”。如果您通过@$/或$/.list将$/重新上下文化为列表,您将获得所需的行为。 (一般来说,for $blah会给你一个迭代。例外情况包括如果$blah有一个Slip,或者如果你使用:=运算符绑定了一个没有标量容器的值) -
@timotimo 非常感谢!!
@$/正是我需要的,非常好用!
标签: raku