gpt4 book ai didi

regex - 将分组元素存储在 perl 中的两个不同数组中?

转载 作者:行者123 更新时间:2023-12-01 11:27:03 26 4
gpt4 key购买 nike

我尝试将第一组存储在 @a1 中,将第二组存储在 @a2

my $string = "abc123def456abc321def654";
my (@a1,@a2) = $string =~m/abc(\d+)def(\d+)/g;
$, = "\n";
print @a1;

结果为 123 456 321 654 然后 @a2 为空。但我想要的结果是 @a1 = 123 321; @a2 = 456 654对于这个结果,我尝试了 hash ,用于存储键是第一个分组,值是第二个分组,但问题是重复项被删除。使用单个正则表达式匹配的任何可能方法?

我在模式匹配中尝试了 eval group。我从 @a1 得到了正确的结果,但是 @a2 出错了。不知道是什么问题?

my (@a1, @a2);
$string =~m/abc(\d+) (?{push @a1, $1}) def(\d+)(?{push @a2,$2 }) \G/x;

@a1 结果是

1234
321
666

@a2 结果是

4567
456
45
4
654
65
6
777
77
7

最佳答案

你可以这样做:

use List::Util 'pairs';
my @a12 = pairs $string =~ /abc(\d+)def(\d+)/g;
my @a1 = map $_->[0], @a12;
my @a2 = map $_->[1], @a12;

use List::MoreUtils 'part';
my $i = 0;
my @part = part { $i++ % 2 } $string =~ /abc(\d+)def(\d+)/g;
my @a1 = @{ $part[0] };
my @a2 = @{ $part[1] };

或者直接跳过设置@a1 和@a2 并使用@a12 或@part 中的数据。

关于regex - 将分组元素存储在 perl 中的两个不同数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36395147/

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