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

标签 regex perl

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

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

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

最佳答案

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

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

在这种情况下,由于.与换行符不匹配,因此无需进行延迟量化。以下将提供更好的性能:
my @matches = ($result =~ m/INFO\n(.*)\n/g);

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

关于正则表达式-匹配所有出现的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11208924/

相关文章:

python - 如何将带有命名组的 Perl 正则表达式转换为 Python?

python - 如何在 vim 正则表达式中保留相同的子字符串

Perl hash of hashes of hashes ... 是否有 'easy' 方法来获取列表末尾的元素?

php - 解析和生成 Microsoft Office 2007 文件(.docx、.xlsx、.pptx)

python - 正则表达式匹配 Python 函数调用

javascript - 检查 url 正则表达式是否是一部分

c++ - boost 表现力!接线员不工作

java - 如何从android中的文本中提取所有URL

c# - 允许空白的电子邮件正则表达式?

Perl Archive::zip -- 文件未添加