使用perl拆分带有多个空格的字符串?

时间:2010-07-29 20:09:29

标签: regex perl split

我正在尝试拆分一个包含多个空格的字符串。我只想拆分有2个或更多空格的地方。我尝试了很多东西,并且我一直得到相同的输出,即它在每个字母之后分裂。这是我尝试过的最后一件事

@cellMessage = split(s/ {2,}//g, $message);
                foreach(@cellMessage){
                    print "$_ \n";
                }

5 个答案:

答案 0 :(得分:13)

@cellMessage = split(/ {2,}/, $message);

答案 1 :(得分:9)

保留您在示例中使用的语法我建议:

@cellMessage = split(/\s{2,}/, $message);
                foreach(@cellMessage){
                    print "$_ \n";
                }

因为您将匹配任何空白字符(制表符,空格等...)。原始代码的问题在于split指令正在查找模式,而您提供的正则表达式导致空字符串//,将$message拆分为单个字符。

答案 2 :(得分:3)

use strict;
use warnings;
use Data::Dumper;

#                  1    22     333
my $message = 'this that  other   555';
my @cellMessage = split /\s{2,}/, $message;
print Dumper(\@cellMessage);

__END__

$VAR1 = [
          'this that',
          'other',
          '555'
        ];

答案 3 :(得分:0)

你实际上可以这样做:

@cellMessage = split(/ \ s + /,$ message);

它与“@cellMessage = split(/ {2,} /,$ message);”相同但对我来说看起来有点干净。

答案 4 :(得分:-1)

试试这个:\b(\s{2,})\b

这应该可以让你在单词边界之间有多个空格。