在我的C#程序中,我编写了一个Google搜索功能,它通过从每个页面获取源代码并通过正则表达式获取URL来工作。
我的实际正则表达式是:
(?:(?:(?:http)://)(?:w{3}\\.)?(?:[a-zA-Z0-9/;\\?&=:\\-_\\$\\+!\\*'\\(\\|\\\\~\\[\\]#%\\.])+)
目前效果很好,但我得到了http://www.example.com/forums/arcade.php?efdf=332
我只想在这种情况下得到最后没有?efdf=332
的网址。
那么我应该如何更改正则表达式呢?
答案 0 :(得分:1)
http://(?:www\.)?[a-zA-Z0-9/;&=:_$+!*'()|~\[\]#%.\\-]+
与正则表达式相同(我删除了很多不必要的瑕疵),但在?
之前停止匹配链接。
在C#中:
Regex regexObj = new Regex(@"http://(?:www\.)?[a-zA-Z0-9/;&=:_$+!*'()|~\[\]#%.\\-]+")
那就是说,我不确定这是一种匹配网址的好方法(https
,ftp
,mailto
等等。)
答案 1 :(得分:0)
您可以使用Uri
类访问URL的各个部分,并从末尾删除查询字符串,或者连接所需的部分。