在 perl 正则表达式中匹配多行中的单词
Match words in multiple lines in perl regex
我想编写一个 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)
你可以试试这个方法。它不需要 modifier.Or 否则你也可以使用修饰符 s
==> DOTALL
感谢@vks 和@hwnd 告诉我如何正确编写这条规则
/(?=.*imperdiet)(?=.*iaculis)(?=.*nec)/si
有效:)
我想编写一个 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)
你可以试试这个方法。它不需要 modifier.Or 否则你也可以使用修饰符 s
==> DOTALL
感谢@vks 和@hwnd 告诉我如何正确编写这条规则
/(?=.*imperdiet)(?=.*iaculis)(?=.*nec)/si
有效:)