regex - 在perl正则表达式中匹配多行中的单词

标签 regex perl

我想编写一个 spamassassin 规则来捕获垃圾邮件。该规则会发现邮件中出现的一些不良词语。例如,这是一封电子邮件:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vehicula nec eros et consectetur. Integer iaculis consectetur nisi sed feugiat. Praesent accumsan ipsum ac ante porttitor, ut fringilla libero venenatis. Sed porttitor imperdiet dignissim. Integer consectetur, nulla eu aliquet elementum, nisl lectus lobortis nisi, in pretium sem dui in ligula.

文本有六个换行符。脏话是“imperdiet”、“iaculis”和“nec”。我正在写一条规则:

/(?=.*imperdiet)(?=.*iaculis)(?=.*nec)/im

但这不起作用。只有当一行中出现脏话时,它才起作用。 如何匹配整个字符串?

最佳答案

(?=[\s\S]*imperdiet)(?=[\s\S]*iaculis)(?=[\s\S]*nec)

你可以尝试这种方式,它不需要修饰符。或者你也可以使用修饰符 s ==> DOTALL

关于regex - 在perl正则表达式中匹配多行中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28479620/

相关文章:

c# - 匹配多行的正则表达式选项以及忽略大小写

Javascript RegExp 在具有嵌套子字符串的字符串上应用跨度标签

ruby - 由正则表达式评估的两个字符串,但其中一个扫描结果被放入一个额外的数组中?

regex - 使用正则表达式查找两个字符串之间的多个匹配项

perl - 我如何在 perl 中模拟退出行为?

perl - 使用 perl 将 RTF 转换为 TEXT

perl - 如何使用 Perl 正确计算 CSV 文档中字段的长度?

Python 正则表达式\W : with vs without parenthesis

perl - 在不创建本地副本的情况下取消引用哈希

arrays - Perl Data::Dumper 数组内的哈希值?