加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 06:09:56 所属栏目:大数据 来源:网络整理
导读:应该很简单,但我无法应付它. 我想匹配与bs完全相同的数量.所以,以下 my $input = 'aaabbbb';$input ~~ m:ex/ ... /; 应该产生: aaabbbaabbab UPD:以下变体不起作用,可能是因为:@smls’s answer中提到的:ex bug(但更可能是因为我犯了一些错误?): my $in
应该很简单,但我无法应付它.

我想匹配与bs完全相同的数量.所以,以下

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

应该产生:

aaabbb
aabb
ab

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

> 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目前可以防止这种情况.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读