正则表达式检测包含其他网址的网址

时间:2011-11-30 22:05:01

标签: c# php regex perl

  

XXXXXXhttp://东西/东西-HTTP://directedto.com/XXXXXXX

我有一个字符串列表,其中X代表一个随机扩展的ASCII字符。我找不到任何可以帮助我获取的正则表达式的网络源代码

  

http://something/something-http://directedto.com/

字符串。你能给我一个真正有帮助的正则表达式吗?

EDIT;上面的字符串只是一个例子 和其他情况一样

  

XXXXXhttp://东西/ somehttp / qausiehfiuhakjh- / HTTP://directedto.net/soemthignelseXXXXXXX   XXXXXXXXXXhttp://www.yahoo.com/_ylt=Asq0NTMqTVFcCmnB3eR857SbvZx4; _ylu = X3oDMTNvZ2dtNnI1BGEDMQRjY29kZQNwemJ1YWxsY2FoNQRjcG9zAzIEZwMxBGludGwDdXMEbWNvZGUDcHpidWFsbGNhaDUEbXBvcwMzBHBrZ3QDMgRwb3MDMQRzZWMDdGQtbG9jBHNsawN0aXRsZQR0ZXN0AzcwMQR3b2UDMjQ1OTExNQ - / SIG = 14l1h2t2v / EXP = 1322779228 / ** HTTP://www.nytimes.com/2011/12/01/nyregion/told-对多元化码头工会-报价,近乎全白list.html%3Fsrc =我%26ref = nyregionXXXXXXXXXXXXXX

1 个答案:

答案 0 :(得分:1)

检测URL实际上非常困难,因为它几乎可以包含任何字符,包括“随机扩展的ascii”字符。这里有一个很好的解释原因:http://daringfireball.net/2010/07/improved_regex_for_matching_urls。不幸的是,该示例假设URL周围存在某种“字边界”,而您的问题并非如此。

没有任何方法可以可靠地检测到任何可能的网址,但您可以做出一些假设,也许您的网址都以'http:'或'https:'开头,并且只包含字母数字字符,下划线和句点?这对此有用:

https?:[a-zA-Z0-9./]+

如果您使用您尝试搜索的实际文字的更好示例更新您的问题,我可以根据需要改进我的模式。