【问题标题】:Splitting a string with multiple white spaces with perl?用perl分割一个带有多个空格的字符串?
【发布时间】:2011-03-22 22:42:06
【问题描述】:

我试图用多个空格分割一个字符串。我只想在有 2 个或更多空格的地方拆分。我尝试了多种方法,但我一直得到相同的输出,即它在每个字母后拆分。这是我尝试的最后一件事

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

【问题讨论】:

  • 用您使用的语言标记此问题,您将获得更多回复。
  • 是的......我不知道 Perl,但这看起来像 Perl。那么应该是笔误吧。 ;P
  • 已经提到过,但还没有人为您详细说明:s/ {2,}//g 是对默认变量 $_ 的替换操作,不会为 split 生成正则表达式使用。它返回的只是一个数字,表示$_ 中的任何内容发生了多少次替换。请参阅此处了解该运算符的工作原理:perldoc.perl.org/perlrequick.html#Search-and-replace

标签: regex perl split


【解决方案1】:
@cellMessage = split(/ {2,}/, $message);

【讨论】:

  • 但这并不是真正的空白,只有空格。 \s 也会给你标签:@cellMessage = split(/\s{2,}/, $message);
  • 另一个小的改进是使用 + 而不是 {2,}。 + 的意思就是,“至少一个”: split(/\s+/, $message);
  • @Philippe A.,他说他想分割 2 个或更多空间。那将是/\s\s+/,它只比/\s{2,}/ 少1 个字符。它们的含义相同。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案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'
            ];
    

    【讨论】:

      【解决方案4】:

      你实际上可以这样做:

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

      它的作用与“@cellMessage = split(/ {2,}/, $message);”相同但对我来说看起来更干净一些。

      【讨论】:

      • 没关系,误读了这个问题。这里的答案不好,它只适用于 1 个或多个空格
      【解决方案5】:

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

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

      【讨论】:

      • Shinjuo 的拆分语法错误。它与单词边界无关。埃里克有正确的答案。
      猜你喜欢
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      相关资源
      最近更新 更多