Разделение строки с несколькими пробелами с жемчугом?

Я пытаюсь разделить строку с несколькими пробелами. Я только хочу разделить, где существует 2 или больше пробела. Я попробовал несколько вещей, и я продолжаю получать тот же вывод, который является, что он разделяет после каждой буквы. Вот последняя вещь, которую я попробовал

@cellMessage = split(s/ {2,}//g, $message);
                foreach(@cellMessage){
                    print "$_ \n";
                }
6
задан shinjuo 29 July 2010 в 20:09
поделиться

4 ответа

@cellMessage = split(/ {2,}/, $message);
13
ответ дан 8 December 2019 в 04:50
поделиться

Попробуйте вот это: \b(\s{2,})\b

Это даст вам все, что имеет несколько пробелов между границами слов.

-1
ответ дан 8 December 2019 в 04:50
поделиться
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
ответ дан 8 December 2019 в 04:50
поделиться

Сохраняя синтаксис, который вы использовали в своем примере, я бы порекомендовал следующее:

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

, потому что вы будете соответствовать любому символу пробела (табуляции, пробелы и т. Д. ...). Проблема с исходным кодом заключалась в том, что инструкция split ищет шаблон, а указанное вами регулярное выражение привело к пустой строке // , которая разбивает $ message на отдельные символы.

9
ответ дан 8 December 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: