想写个采集器。 在获取页面URL的时候,正则式总是不中用。
回过头去再看了一边相关资料,还是不得要领(大小脑欠发达,悲剧啊)
这里想高手请教一则表达式。
只要能够获得页面中的URL就行了。 可排除mailto|location.|javascript|.*css
Code
传说中我写的就是上面这造型,得到的就是
href="/Article/zsinzi/Index.html"
... 这类造型。。
请高手帮忙修整一下下。谢谢。
疑问:传说中?: 不是不捕获匹配的文本吗?结果中的herf=咋跑来了??
试试这个
(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?
这里搜索更多的:
http://regexlib.com/Search.aspx?k=url&c=2&m=5&ps=20
楼主的修改下应该也可以的:
(?<=href\s*=)(?:[ \s""']*)(?!#|mailto|location.|javascript|.*css|.*this\.)[^""']*(?:[ \s>""'])
至于得到的引号,你替换一下即可。
我不知道
string strregex = @"[a-zA-z]+://[^\s]*";
Regex r = new Regex(strregex, RegexOptions.IgnoreCase);
MatchCollection m = r.Matches(htmlcode);
用上面的先捉一次,下用下面的捉一次,用hashtable裝起來,去掉重複的
Regex re = new Regex(@"href=(?<web_url>[\s\S]*?)>|href=""(?<web_url>[\s\S]*?)""|href='(?<web_url>[\s\S]*?)'");