首页 新闻 会员 周边

求一则正则表达式

0
悬赏园豆:100 [已解决问题] 解决于 2009-09-22 16:35

想写个采集器。 在获取页面URL的时候,正则式总是不中用。

回过头去再看了一边相关资料,还是不得要领(大小脑欠发达,悲剧啊)

这里想高手请教一则表达式。

只要能够获得页面中的URL就行了。 可排除mailto|location.|javascript|.*css

 

Code

 

传说中我写的就是上面这造型,得到的就是

 href="/Article/zsinzi/Index.html"

... 这类造型。。

请高手帮忙修整一下下。谢谢。

疑问:传说中?: 不是不捕获匹配的文本吗?结果中的herf=咋跑来了??

南南的主页 南南 | 初学一级 | 园豆:4
提问于:2009-09-22 15:17
< >
分享
最佳答案
0

试试这个

(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?

这里搜索更多的:

http://regexlib.com/Search.aspx?k=url&c=2&m=5&ps=20

楼主的修改下应该也可以的:

(?<=href\s*=)(?:[ \s""']*)(?!#|mailto|location.|javascript|.*css|.*this\.)[^""']*(?:[ \s>""'])


至于得到的引号,你替换一下即可。

收获园豆:100
邀月 | 高人七级 |园豆:25475 | 2009-09-22 15:49
呵呵,你这个得到的结果格式倒还真是我想要的。 不过结果不对,您这个把页面上的外链全给找出来了,内链一个没有。 - -~ 不过也感激一下。谢谢
南南 | 园豆:4 (初学一级) | 2009-09-22 16:04
@小喜子:修改后的结果你测试下
邀月 | 园豆:25475 (高人七级) | 2009-09-22 16:11
@邀月:嗯,差不多了。呵呵。谢谢邀月费心了。还有点小问题,我想我能够搞定了。
南南 | 园豆:4 (初学一级) | 2009-09-22 16:32
(?<=href\s*=[ \s""']*)(?!#|mailto|location.|javascript|.*css|.*this\.)[^""']*(?=[ \s>""']) 我继续修改了一下,前后的引号没了。呵呵,刚好得到所要的效果。。不过(?<=href\s*=[ \s""']*)这里好象有点问题。琢磨中.......
南南 | 园豆:4 (初学一级) | 2009-09-23 14:16
其他回答(2)
0

我不知道

 

知道游客 | 园豆:205 (菜鸟二级) | 2009-09-22 15:23
你真是我亲哥哥。。。
支持(0) 反对(0) 南南 | 园豆:4 (初学一级) | 2009-09-22 15:35
0

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]*?)'");

风浪 | 园豆:2996 (老鸟四级) | 2009-09-22 16:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册