有一个字符串,为:
$string= 123456-9876;
需要将其拆分为以下数组:
$string = [12,34,56,98,76]
尝试将其拆分为split('-',$ string)不能达到目的。 我如何在Perl中做到这一点?
答案 0 :(得分:5)
提取数字对:(例如"1234-5678"
⇒[12,34,56,78]
)
$string = [ $string =~ /\d\d/g ];
提取数字对,即使用非数字分隔也是如此:(例如"1234-567-8"
⇒[12,34,56,78]
)
$string = [ $string =~ s/\D//rg =~ /../sg ];
答案 1 :(得分:1)
您可以使用此Perl代码捕获所有2位数字,而不必进行拆分,
$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 ";
}
打印
12 34 56 98 76