0

我运行一个基于 Django 的论坛(该框架可能对这个问题并不重要,但仍然如此)并且它越来越多地收到不断链接到特定网站的帖子(www.solidwoodkitchen.co.uk - 这些人显然是最差的)。

我已经实现了一个字符串阻止系统,如果帖子中包含网站的 URL,它会阻止他们在论坛上发帖,但正如垃圾邮件机器人通常所做的那样,它已经通过将 URL 与其他字符分解来找到解决方法(例如 w_w_w.s*olid_wood*kit_ch*en._*co.*uk 。)。所以有几个问题:

  1. 是否有可能构建一个能够在文本块中找到特定 URL 的正则表达式,即使它已被这样修改?
  2. 如果是,这会导致性能下降吗?
4

1 回答 1

1

描述

您可以将 url 分解为一串字符,然后将它们与[^a-z0-9]*?. 所以在这种情况下,www.solidwoodkitchen.co.uk生成的正则表达式看起来像:

w[^a-z0-9]*?w[^a-z0-9]*?w[^a-z0-9]*?[.][^a-z0-9]*?s[^a-z0-9]*?o[^a-z0-9]*?l[^a-z0-9]*?i[^a-z0-9]*?d[^a-z0-9]*?w[^a-z0-9]*?o[^a-z0-9]*?o[^a-z0-9]*?d[^a-z0-9]*?k[^a-z0-9]*?i[^a-z0-9]*?t[^a-z0-9]*?c[^a-z0-9]*?h[^a-z0-9]*?e[^a-z0-9]*?n[^a-z0-9]*?[.][^a-z0-9]*?c[^a-z0-9]*?o[^a-z0-9]*?[.][^a-z0-9]*?u[^a-z0-9]*?k

正则表达式图片

在 Debuggex 上实时编辑

这基本上可以搜索由零个或多个非字母数字字符分隔的整个字符串。

或者您可以获取输入文本并删除所有标点符号,然后简单地搜索wwwsolidwoodkitchencouk.

于 2013-05-31T04:39:37.503 回答