我有一个字符串,我需要拆分某个角色。但是,当它的两侧是数字时,我只需要在其中一个字符上拆分字符串。字符串中的其他位置存在相同的字符,但两侧会有一个字母 - 至少在一侧。我试图使用split函数如下(使用“x”作为有问题的字符):
my @array = split /\dx\d/, $string;
但是,此功能会删除“x”和侧翼数字。如果可能,我想保留数字。有什么想法吗?
答案 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;