使用正则表达式获取由不同数量的空格分隔的单词?

时间:2012-07-24 17:29:31

标签: regex perl

我正在尝试抓取字符串中可以用不同数量的空格分隔的每个单词。

my $ff = "Disk  DSM     Policy  Paths   Serials";

if($ff =~ m/(\w+)/) {
    print $1;
    print $2;
    print $3;
}

我认为它会像\ w一样简单,但它只能得到第一个字?我做错了吗?

1 个答案:

答案 0 :(得分:5)

您需要match globally

my $ff = "Disk  DSM     Policy  Paths   Serials";

my (@words_match) = $ff =~ /(\w+)/g;
# (
#     'Disk',
#     'DSM',
#     'Policy',
#     'Paths',
#     'Serials'
# )

更好的解决方案是split

my @words_split = split ' ', $ff;
# (
#     'Disk',
#     'DSM',
#     'Policy',
#     'Paths',
#     'Serials'
# )