Regex 在Perl正则表达式数组中找到未定义的匹配项

Regex 在Perl正则表达式数组中找到未定义的匹配项,regex,perl,Regex,Perl,我有一个字符串(例如“24G22”),我正试图将其拆分为数字和字符的单独元素(例如24、g、22)。为此,我编写了如下所示的正则表达式 然而,出于某种奇怪的原因,我在数组中得到了很多未定义的元素,这些元素的形式是我所期望的: @数组=('24','G','22') 而不是 @数组=('24',未定义,未定义,'G','22',未定义) 这是我从输出中得到的 有人能帮我解释一下错误的原因,以及我如何纠正错误并获得所需的输出吗 脚本 #!/usr/bin/perl use strict; use

我有一个字符串(例如“24G22”),我正试图将其拆分为数字和字符的单独元素(例如24、g、22)。为此,我编写了如下所示的正则表达式

然而,出于某种奇怪的原因,我在数组中得到了很多未定义的元素,这些元素的形式是我所期望的:

@数组=('24','G','22')

而不是

@数组=('24',未定义,未定义,'G','22',未定义)

这是我从输出中得到的

有人能帮我解释一下错误的原因,以及我如何纠正错误并获得所需的输出吗

脚本

#!/usr/bin/perl

use strict;
use warnings;

my $string = '24G22';
my @array = ( $string =~ m/([0-9]+)|([ATGCN]+)/g );
print join("\n", @array);
$ ./test_debug.pl
Use of uninitialized value $array[1] in join or string at ./test_debug.pl line 8.
Use of uninitialized value $array[2] in join or string at ./test_debug.pl line 8.
Use of uninitialized value $array[5] in join or string at ./test_debug.pl line 8.
24


G
22

输出

#!/usr/bin/perl

use strict;
use warnings;

my $string = '24G22';
my @array = ( $string =~ m/([0-9]+)|([ATGCN]+)/g );
print join("\n", @array);
$ ./test_debug.pl
Use of uninitialized value $array[1] in join or string at ./test_debug.pl line 8.
Use of uninitialized value $array[2] in join or string at ./test_debug.pl line 8.
Use of uninitialized value $array[5] in join or string at ./test_debug.pl line 8.
24


G
22

仅在一个组中分组:

my @array = ( $string =~ m/([0-9]+|[ATGCN]+)/g );
因为每场比赛你只需要抓一组


对于你的,你每次都要匹配两组,其中一组是空的。

为什么OP在这个问题上被否决了??这是一个很好的问题,有一个明确的例子。