是否可以在procmail中应用过滤特定单词模式的正则表达式。 例如,我可以使用普通正则表达式执行此操作:
/(?=.*dolor)(?=.*ipsum)(?=.*sit)/s
这将产生与以下文本的匹配。这不会:
/(?=.*money)(?=.*ipsum)(?=.*sit)/s
Lorem ipsum dolor sit amet,consetetur sadipscing elitr,sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua。在vero eos et accusam et justo duo dolores et ea rebum。 Stet clita kasd gubergren,no sea takimata sanctus est Lorem ipsum dolor坐着。 Lorem ipsum dolor坐在amet,consetetur sadilcing elitr,sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,sed diam voluptua。在vero eos et accusam et justo duo dolores et ea rebum。 Stet clita kasd gubergren,没有海 takimata sanctus est Lorem ipsum dolor sit amet。
我希望这能适应procmail的使用。甚至延伸它,而不只是搜索“钱”,它也会匹配“mOney”,“möney”,“móney”等等。
有可能吗? 如果是这样,怎么样?
答案 0 :(得分:1)
是的,有可能。让我来告诉你怎么做。
您的正则表达式会检查单词dolor
,ispum
和sit
是否以随机顺序出现在文本中的某个位置。以下procmail配方也是如此:
:0 B
* -2^0
* 1^0 \<dorum\>
* 1^0 \<ipsum\>
* 1^0 \<sit\>
action_dorum_ipsum_sit
第一个条件包含一个空的正则表达式,因为它总是匹配,用于给你的分数一个负偏移量。每个下一个规则的匹配将该分数增加1(无论每个单词出现的频率如何)。最后,如果文本至少包含所有3个单词,则得分只会是正数(因此会触发操作)。
要添加更多关键字,您可以添加更多规则(并相应地减少负偏移)或扩展现有规则,例如像这样
* 1^0 \<(mOney|möney|móney)\>