在我的C#程序,我写了谷歌搜索功能,它的工作原理是从获取每个页面的源,并通过正则表达式得到的URL。

我的实际正则表达式是:

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

这工作不错的那一刻,但我得到例如网址像http://www.example.com/forums/arcade.php?efdf=332

我只是想在这种情况下获得的URL,而不在最后的?efdf=332

所以,我应该怎么改变正则表达式?

有帮助吗?

解决方案

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

确实相同您正则表达式(我已经删除了许多不必要的冗余代码的),但停止一个?之前匹配的链接。

在C#:

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

这是说,我不知道这是相符的网址这样的好方法(怎么样httpsftpmailto等?)

其他提示

可以使用 Uri 类来访问各种部件该URL的内容,然后从端删除的查询字符串,或连接所需的部分。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top