如何在Perl中优雅地从字符串中分割成对的单词?

前端之家收集整理的这篇文章主要介绍了如何在Perl中优雅地从字符串中分割成对的单词?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在perl中,我有一个粗略的字符串

my $str = "one  10 two   20   three    30";

现在,我想将该字符串拆分为字数对,但有
没有成功.

我以为我能做到

my @pairs = split /([a-z]+[^a-z]+)/,$str;

然后会有

$pairs[0] eq 'one  10 '
$pairs[1] eq 'two   20   '
$pairs[2] eq 'three    30'

但是,我明白了

$pairs[0] eq ' '
$pairs[1] eq 'one  10 '
$pairs[2] eq ' '
$pairs[3] eq 'two   20   '
$pairs[4] eq ' '
$pairs[5] eq 'three    30'

现在,我可以使用grep来获得我想要的结果:

my @pairs = grep {$_ =~ /\S/} split /([a-z]+[^a-z]+)/,$str;

但我想知道是否有一个更优雅的解决方案来解决这个问题.

解决方法

不知道它是否是一个优雅的解决方案,你可以使用与/ g修饰符匹配:

my @pairs = $str =~ /(\w+\s+\d+)/g;

猜你在找的Perl相关文章