Использование функции разделения Perl, но с сохранением определенных разделителей - PullRequest
4 голосов
/ 13 июля 2010

У меня есть строка, которую нужно разделить на определенный символ.Однако мне нужно разбить строку только на один из этих символов, когда он окружен цифрами.Этот же символ существует в других местах строки, но будет окружен буквой - по крайней мере, с одной стороны.Я попытался использовать функцию разделения следующим образом (используя «x» в качестве рассматриваемого символа):

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

Эта функция, однако, удаляет цифры «x» и фланкирующие цифры.Я хотел бы сохранить цифры, если это возможно.Есть идеи?

Ответы [ 2 ]

13 голосов
/ 13 июля 2010

Используйте утверждения нулевой ширины:

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

Это будет соответствовать x, которому предшествует цифра, за которой следует цифра, но сами цифры не потребляются.

1 голос
/ 13 июля 2010

Вы можете сначала заменить персонажа, на которого вы хотите разделить, чем-то уникальным, а затем разделить на эту уникальную вещь, что-то вроде этого:

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