在文本字符串中检测(淘气或漂亮)网址或链接
如何检测(使用正则表达式或启发式方法)一个文本字符串中的网站链接,如评论?
目的是防止垃圾邮件。 HTML被剥离,所以我需要检测复制和粘贴的邀请。 垃圾邮件发布者发布链接应该不经济,因为大多数用户无法成功访问该页面。 我希望提出建议,参考或讨论最佳做法。
一些目标:
http://some-fqdn/some/valid/path.ext
) http://
前缀(即有效的FQDN +有效的HTTP路径) 当然,我正在阻止垃圾邮件,但是可以使用相同的过程来自动链接文本。
思路
这是我在想的一些事情。
www .example.com
”? 普通用户是否知道自己删除空间,或者做任何浏览器“我是什么意思”并将其剥离给你? 相关问题
我已经阅读过这些内容,现在它们在这里被记录下来,所以如果你愿意,你可以在这些问题中引用正则表达式。
更新和总结
哇,我有一些非常好的启发式在这里列出! 对我而言,最好的促销就是以下方面的综合:
这应该使垃圾邮件发送者的CPM足够低以满足我的需求; “标志不当”用户反馈应该抓住其他任何东西。 列出的其他解决方案也非常有用:
我正在集中努力避免垃圾邮件发送者。 这导致了两个假设:使用系统的人将因此积极地试图违反你的支票,你的目标只是检测URL的存在,而不是提取完整的URL。 如果你的目标是别的东西,这个解决方案看起来不一样
我认为你最好的选择是与TLD合作。 有两个字母的ccTLD和(当前)比较小的其他列表。 这些需要以点为前缀,并以斜线或一些字边界作为后缀。 正如其他人所指出的,这不会是完美的。 在没有禁止合法的“我再次尝试,不起作用”或类似的情况下,没有办法获得“buyfunkypharmaceuticals。it”。 所有这些说,这将是我的建议:
[^b].([a-zA-Z]{2}|aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel)[b/]
事情会得到:
只要人们开始混淆他们的URL,它就会中断,取代“。”。 与“点”。 但是,再次假设垃圾邮件制造者是你的目标,如果他们开始做这样的事情,他们的点击率将会下降几个数量级到零。 我认为,那些足够了解垃圾邮件网址的人以及那些不知情的人访问垃圾邮件网站,我认为这是一个小小的交叉点。 这个解决方案应该让你检测到复制和粘贴到地址栏的所有URL,同时将附带损害保持在最低限度。
检查这些文章:
我不确定是否使用正则表达式检测URL是解决此问题的正确方法。 通常情况下,你会错过某些模糊的边缘案例,如果垃圾邮件发送者有足够的动机,他们将能够利用这种情况。
如果您的目标只是将垃圾邮件过滤掉,那么您可能需要考虑贝叶斯过滤。 事实证明,将电子邮件标记为垃圾邮件是非常准确的,它也可以为您做同样的事情,具体取决于您需要过滤的文本的数量。
链接地址: http://www.djcxy.com/p/18123.html上一篇: Detecting a (naughty or nice) URL or link in a text string
下一篇: Build an ASCII chart of the most commonly used words in a given text