Noob在这里提问。我有一个非常简单的perl脚本,我希望正则表达式匹配字符串中的多个部分
my $string = "ohai there. ohai";
my @results = $string =~ /(\w\w\w\w)/;
foreach my $x (@results){
print "$x\n";
}
这不是我想要的方式,因为它只返回 ohai 。我希望它匹配并打印 ohai ther ohai
我将如何做到这一点。
由于
答案 0 :(得分:28)
这会做你想要的吗?
my $string = "ohai there. ohai";
while ($string =~ m/(\w\w\w\w)/g) {
print "$1\n";
}
返回
ohai
ther
ohai
来自perlretut:
修饰符“// g”代表全局匹配并允许 匹配运算符以匹配a 字符串尽可能多次。
另外,如果你想把匹配放在数组中,你可以这样做:
my $string = "ohai there. ohai";
my @matches = ($string =~ m/(\w\w\w\w)/g);
foreach my $x (@matches) {
print "$x\n";
}
答案 1 :(得分:0)
或者你可以这样做
my $string = "ohai there. ohai";
my @matches = split(/\s/, $string);
foreach my $x (@matches) {
print "$x\n";
}
在这种情况下,拆分功能会拆分空格并打印
ohai
there.
ohai