我正在尝试拆分一个包含多个空格的字符串。我只想拆分有2个或更多空格的地方。我尝试了很多东西,并且我一直得到相同的输出,即它在每个字母之后分裂。这是我尝试过的最后一件事
@cellMessage = split(s/ {2,}//g, $message);
foreach(@cellMessage){
print "$_ \n";
}
答案 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
这应该可以让你在单词边界之间有多个空格。