Есть строка как:
$string= 123456-9876;
Нужно разбить ее на массив следующим образом:
$string = [12,34,56,98,76]
, пытаясь разбить ее как split ('-', $ string)не служит цели.Как я могу сделать это в Perl?
Извлечение пар цифр: (например, "1234-5678" ⇒ [12,34,56,78])
"1234-5678"
[12,34,56,78]
$string = [ $string =~ /\d\d/g ];
Извлечение пар цифр, даже если они разделены не цифрами: (например, "1234-567-8" ⇒ [12,34,56,78])
"1234-567-8"
$string = [ $string =~ s/\D//rg =~ /../sg ];
Вместо разделения можно записать все 2-значные числа с помощью этого кода perl,
$str = "123456-9876"; my @matches = $str =~ /\d{2}/g; print "@matches\n";
Отпечатки,
12 34 56 98 76
Другое решение, , которое простогруппирует две цифры независимо от того, где в строке присутствуют нецифровые символы, без изменения исходной строки
$string = "1dd23-dsd--456-9-876"; while($string =~ /(\d).*?(\d)/g) { print "$1$2 "; }
Prints,