gpt4 book ai didi

raku - 如何在 Perl 6 正则表达式中匹配相同数量的不同原子?

转载 作者:行者123 更新时间:2023-12-01 07:24:00 26 4
gpt4 key购买 nike

应该很简单,但我无法应付。

我想匹配完全相同数量的a s 为 b s。所以,以下

my $input = 'aaabbbb';
$input ~~ m:ex/ ... /;

应该产生:

aaabbb
aabb
ab

更新:以下变体不起作用,可能是因为 :ex错误,在 @smls's answer 中提到(但更有可能是因为我犯了一些错误?):

> my $input = "aaabbbb";
> .put for $input ~~ m:ex/ (a) * (b) * <?{ +$0 == +$1 }> /;
Nil
> .put for $input ~~ m:ex/ (a) + (b) + <?{+$0 == +$1}> /;
Nil

这个,用 :ov? ,作品:

> my $input = "aaabbbb";
> .put for $input ~~ m:ov/ (a)+ (b)+? <?{+$0 == +$1}> /;
aaabbb
aabb
ab

UPD2:以下解决方案适用于 :ex也一样,但我必须在没有 <?...> 的情况下做断言。

> $input = 'aaabbbb'
> $input ~~ m:ex/ (a) + (b) + { put $/ if +$0 == +$1 } /;
aaabbb
aabb
ab

最佳答案

my $input = "aaabbbb";
say .Str for $input ~~ m:ov/ (a)+ b ** {+$0} /;

输出:
aaabbb
aabb
ab

它应该与 :ex 一起使用而不是 :ov ,也是 - 但是 Rakudo bug #130711目前阻止了这一点。

关于raku - 如何在 Perl 6 正则表达式中匹配相同数量的不同原子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47423542/

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