这是我的正则表达式新手问题:
- 如何检查字符串中是否有 3 个垃圾词? (例如:伟哥、药丸和商店)
- 如何检测这些垃圾邮件词语的变体,例如“v-iagra”或“v.iagra”? (额外一个字符)
最佳答案
正则表达式似乎不太适合这个特定的钉子。对于您的列表,您可以简单地将所有列入黑名单的单词放入某种排序列表中,然后根据该列表扫描每个标记。直接字符串操作总是比调用当前的正则表达式引擎更快。
对于您的变体(“v-iagra”等),我会删除所有非字符(如@Kinopiko建议的那样),然后再次将它们运行到您的黑名单中。如果你对“viiagra”之类的东西保持警惕,我会看看 Aspell 。这是一个很棒的库,看起来 CPAN 有 Perl 绑定(bind)。
关于regex - 新手正则表达式问题 - 检测垃圾邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1733851/