代码之家  ›  专栏  ›  技术社区  ›  shinjuo

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

  •  6
  • shinjuo  · 技术社区  · 14 年前

    我正在尝试用多个空格拆分字符串。我只想在有2个或更多空格的地方拆分。我已经尝试了多种方法,我不断得到相同的输出,这是它分裂后,每一个字母。这是我最后一次尝试

    @cellMessage = split(s/ {2,}//g, $message);
                    foreach(@cellMessage){
                        print "$_ \n";
                    }
    
    5 回复  |  直到 14 年前
        1
  •  13
  •   strager    14 年前
    @cellMessage = split(/ {2,}/, $message);
    
        2
  •  9
  •   dls    14 年前

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

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

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

        3
  •  3
  •   toolic    14 年前
    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'
            ];
    
        4
  •  0
  •   user2506092    11 年前

    你可以做到:

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

        5
  •  -1
  •   AllenG    14 年前

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

    这应该可以得到任何单词边界之间有多个空格的东西。