procmail regex filter mails containing a list specific word patterns
是否可以在procmail中应用一个regex来过滤特定的单词模式?例如,我可以用一个普通的regex来实现这一点:
1 | /(?=.*dolor)(?=.*ipsum)(?=.*sit)/s |
这将产生与以下文本的匹配。如果没有:
1 | /(?=.*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. At vero eos et accusam et justo duo dolores et ea
rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem
ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur
sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et
dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam
et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea
takimata sanctus est Lorem ipsum dolor sit amet.
号
我想让它适应于程序使用。甚至扩展它,这样它就不会仅仅搜索"钱",而是匹配"钱","M"?ney、m_ney等。
有可能吗?如果是,如何?
是的,这是可能的。我来教你怎么做。
您的regex检查文本中是否随机出现单词
1 2 3 4 5 6 | :0 B * -2^0 * 1^0 \<dorum\> * 1^0 \<ipsum\> * 1^0 \<sit\> action_dorum_ipsum_sit |
第一个条件包含一个空的正则表达式,因为它总是匹配的,所以用于给分数一个负的偏移量。下一个规则中的每一个匹配都会增加一个分数(不管每个单词出现的频率如何)。最后,如果文本至少包含三个单词,则分数只能为正(因此触发操作)。
要添加更多关键字,您可以添加更多规则(并相应减少负偏移量)或扩展现有规则,例如这样
1 | * 1^0 \<(mOney|m?ney|móney)\> |
号