0

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

我实际的正则表达式是:

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

目前这很好用,但我得到了例如 URLhttp://www.example.com/forums/arcade.php?efdf=332

在这种情况下,我只想获取没有?efdf=332末尾的 URL。

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

4

2 回答 2

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

与您的正则表达式相同(我已经删除了很多不必要的内容),但停止匹配?.

在 C# 中:

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

也就是说,我不确定这是否是匹配 URL 的好方法(那么https,ftpmailto呢?)

于 2010-11-21T14:14:26.543 回答
0

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

于 2010-11-21T14:15:40.933 回答