正则表达式 - 匹配所有出现?

时间:2012-06-26 13:54:45

标签: regex perl

my @matches = ($result =~ m/INFO\n(.*?)\n/);

所以在Perl中,我希望将所有匹配项存储到该正则表达式中。我希望每次发生时将值存储在INFO \ n和\ n之间。

但我只是存储最后一次。我的正则表达式错了吗?

1 个答案:

答案 0 :(得分:11)

使用/g修饰符进行全局匹配。

my @matches = ($result =~ m/INFO\n(.*?)\n/g);

在这种情况下,懒惰量化是不必要的,因为.与换行符不匹配。以下将提供更好的性能:

my @matches = ($result =~ m/INFO\n(.*)\n/g);
如果您确实希望句点与换行符匹配,则可以使用

/s。有关这些修饰符的详细信息,请参阅perlre