首先,我创建了自己的正则表达式来查找文本中的所有网址,因为:
现在模式结构似乎正确,但我不确定是否存在所有有效字符。请发布网址样本以测试我的模式。可能是懒惰,但我不想阅读页面和页面的引用来找到所有这些,需要专注于开发。如果您有可以共享的用户名,密码,路径,查询和锚的有效字符摘要,那将非常有帮助。
最诚挚的问候!
答案 0 :(得分:1)
您链接的模式确实匹配了许多有效和无效的网址。这并不奇怪,因为几乎所有正则表达式都是可选的;正如你自己写的那样,它甚至匹配bit.ly
,因此很容易看出它如何匹配大量的非URL内容。
对于一个(例如http://www.müller.de
),它不会考虑新的Unicode域名。
它与
等有效网址不匹配http://msdn.microsoft.com/en-us/library/aa752574(VS.85).aspx
它与相对路径(可能不是必需的)不匹配,如/cgi-bin/version.pl
。
它与mailto:
个链接不匹配。
它与http://1.2.3.4
之类的网址不匹配。甚至不询问IPv6:)
总而言之,正则表达式 NOT 是可靠地匹配或验证URL的正确工具。这是解析器的工作。如果你能忍受许多误报和假阴性比赛,那么正则表达式就可以了。
请阅读Jan Goyvaerts关于此主题的优秀论文:Detecting URLs in a block of text。