使用Perl split函数,但保留某些分隔符

时间:2010-07-13 12:46:55

标签: regex perl split

我有一个字符串,我需要拆分某个角色。但是,当它的两侧是数字时,我只需要在其中一个字符上拆分字符串。字符串中的其他位置存在相同的字符,但两侧会有一个字母 - 至少在一侧。我试图使用split函数如下(使用“x”作为有问题的字符):

my @array = split /\dx\d/, $string;

但是,此功能会删除“x”和侧翼数字。如果可能,我想保留数字。有什么想法吗?

2 个答案:

答案 0 :(得分:13)

使用零宽度断言:

my @array = split /(?<=\d)x(?=\d)/, $string;

这将匹配数字之前和之后的x,但不会消耗数字本身。

答案 1 :(得分:1)

你可以先用一些独特的东西替换你想要拆分的角色,然后拆分那个独特的东西,如下所示:

$string =~ s/(\d)x(\d)/\1foobar\2/g;
my @array = split /foobar/, $string;