题
在我的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/;&=:_$+!*'()|~\[\]#%.\\-]+")
这是说,我不知道这是相符的网址这样的好方法(怎么样https
,ftp
,mailto
等?)
其他提示
可以使用 Uri
类来访问各种部件该URL的内容,然后从端删除的查询字符串,或连接所需的部分。
不隶属于 StackOverflow