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