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

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

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

4

1 回答 1

13

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

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

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

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

/s如果您确实希望句点匹配换行符,可以使用。有关这些修饰符的更多信息,请参阅perlre

于 2012-06-26T13:56:36.803 回答