1

在下面的代码中,我试图在两个数字之间进行拆分。拆分功能不正常。例如:当我在 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
4

2 回答 2

1

首先,您不想在 0 或 1 上拆分,您想在数字0或旁边的逗号上拆分1

split /(?<!\d)(?:0|1)\K,|,(?=(?:0|1)(?!\d))/
于 2012-11-14T22:07:33.167 回答
0

尝试

split /(\b$k\b|\b$k1\b)/, $j

\b是零宽度字边界分隔符。

于 2012-11-14T22:03:06.737 回答