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

Tak*_*kun 7 regex perl

my @matches = ($result =~ m/INFO\n(.*?)\n/);
Run Code Online (Sandbox Code Playgroud)

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

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

Tim*_*Tim 11

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

my @matches = ($result =~ m/INFO\n(.*?)\n/g);
Run Code Online (Sandbox Code Playgroud)

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

my @matches = ($result =~ m/INFO\n(.*)\n/g);
Run Code Online (Sandbox Code Playgroud)

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