在下面的代码中,我试图将两个数字分开。分裂功能不正常。例如:当我在0和1之间分割时,分割也发生在10到11的数字之间。
有人可以帮助我吗?
use strict;
use warnings;
my $j= "0,2,3,6,5,1,4,7,8,12,11,10,9";
my $k=1; my $k1=0,;
my @ar=split(/($k|$k1)/,$j);
print join(";",@ar);
Expected result:0;2,3,6,5;1;4,7,8,12,11,10,9
Above code result: 0;,2,3,6,5,;1;,4,7,8,;1;2,;1;1;,;1;0;,9
答案 0 :(得分:1)
首先,您不希望在0或1上拆分,您希望在号码0
或1
旁边的逗号上拆分。
split /(?<!\d)(?:0|1)\K,|,(?=(?:0|1)(?!\d))/
答案 1 :(得分:0)
尝试
split /(\b$k\b|\b$k1\b)/, $j
\b
是零宽度字边界定界符。