URL C#的正则表达式

时间:2010-11-21 14:06:18

标签: c# regex url-parsing

在我的C#程序中,我编写了一个Google搜索功能,它通过从每个页面获取源代码并通过正则表达式获取URL来工作。

我的实际正则表达式是:

(?:(?:(?:http)://)(?:w{3}\\.)?(?:[a-zA-Z0-9/;\\?&=:\\-_\\$\\+!\\*'\\(\\|\\\\~\\[\\]#%\\.])+)

目前效果很好,但我得到了http://www.example.com/forums/arcade.php?efdf=332

等网址

我只想在这种情况下得到最后没有?efdf=332的网址。

那么我应该如何更改正则表达式呢?

2 个答案:

答案 0 :(得分:1)

http://(?:www\.)?[a-zA-Z0-9/;&=:_$+!*'()|~\[\]#%.\\-]+

与正则表达式相同(我删除了很多不必要的瑕疵),但在?之前停止匹配链接。

在C#中:

Regex regexObj = new Regex(@"http://(?:www\.)?[a-zA-Z0-9/;&=:_$+!*'()|~\[\]#%.\\-]+")

那就是说,我不确定这是一种匹配网址的好方法(httpsftpmailto等等。)

答案 1 :(得分:0)

您可以使用Uri类访问URL的各个部分,并从末尾删除查询字符串,或者连接所需的部分。