应该很简单,但我无法应对。
我希望将<a href = "#" onclick = "DisplayDocument('1-Disposition-4-Generate
Single Letter.htm')" href = "#">Disposition-Generate Single Letter</a>
的{{1}}与a
完全匹配。那么,以下
b
应该产生:
my $input = 'aaabbbb';
$input ~~ m:ex/ ... /;
UPD:以下变体不起作用,可能是因为@smls's answer中提到的aaabbb
aabb
ab
错误(但更可能是因为我犯了一些错误? ):
:ex
此> my $input = "aaabbbb";
> .put for $input ~~ m:ex/ (a) * (b) * <?{ +$0 == +$1 }> /;
Nil
> .put for $input ~~ m:ex/ (a) + (b) + <?{+$0 == +$1}> /;
Nil
和:ov
适用于:
?
UPD2:以下解决方案也适用于> my $input = "aaabbbb";
> .put for $input ~~ m:ov/ (a)+ (b)+? <?{+$0 == +$1}> /;
aaabbb
aabb
ab
,但我必须在没有:ex
断言的情况下进行此操作。
<?...>
答案 0 :(得分:8)
my $input = "aaabbbb";
say .Str for $input ~~ m:ov/ (a)+ b ** {+$0} /;
输出:
aaabbb
aabb
ab
它应该与:ex
而不是:ov
一起使用 - 但Rakudo bug #130711目前可以阻止它。
答案 1 :(得分:5)
my $input = "aaabbbb";
say .Str for $input ~~ m:ov/ a <~~>? b /;
也适用于ex
my $input = "aaabbbb";
say .Str for $input ~~ m:ex/ a <~~>? b /;
<~~>
表示递归调用自己Extensible metasyntax。 (尚未完全实施。)
以下(更长,但可能更清晰)示例也有效:
my $input = "aaabbbb";
my token anbn { a <&anbn>? b}
say .Str for $input ~~ m:ex/ <&anbn> /;