6

我有一个用 perl 编写的英语论坛站点,它不断被俄语垃圾邮件轰炸。有没有办法使用 Perl 和正则表达式来检测俄语文本以便我可以阻止它?

4

2 回答 2

9

您可以使用以下方法检测西里尔字符(用于俄语):

[\u0400-\u04FF]+

如果您真的只想要俄语字符,您可以查看上述文档,其中包含用于基本俄语字母的确切范围,即[\u0410-\u044F]. 当然,您还需要考虑仅在俄语中使用的扩展西里尔字符——文档中也提到过。

于 2009-09-09T08:04:07.787 回答
3

如果所有内容都这样编码,则使用 JG 建议的 unicode 西里尔字符集就可以了。然而,这是垃圾邮件,在大多数情况下,事情不是。此外,垃圾邮件发送者经常会在垃圾邮件中使用混合字符集,这进一步破坏了这种方法。

我发现检测俄罗斯垃圾邮件的最佳方法(或至少是过程中的初步步骤)是使用 grep 查找最常用的字符集:

koi8-r
windows-1251
iso-8859-5

之后的下一步是尝试一些语言检测算法。如果这是一个足够大的问题,请使用付费服务,例如谷歌翻译(也“检测”)或施乐。这些服务为 IMO 提供了最好的语言检测。

于 2009-09-09T17:40:10.813 回答