我想提取出一个网页里的网址信息进行处理,比如<a href="www.j2mehome.com" target="_blank">j2me之家</a> 我想把所有网页里符合a标记的网址(www.j2mehome.com)和名称(j2me之家)都提取出来,怎么办到呢?我在百度里找到一个正则,但是不能用,出错,代码是这样写的,请高手帮助!谢谢!Regex reg = new Regex(@"<a[^>]*?href="(?<url>[^"]*)"[^>]*>(?<title>.*?)</a>"); 
Match m = reg.Match(目前字符串); 
if(m.Success) 

m.Group["url"].Value //就是 获取的uRL 
m.Group["title"].Value //就是 获取的标题 
}

解决方案 »

  1.   

    try...MatchCollection mc = Regex.Matches(yourStr, @"<a[^>]*href=(['""]?)(?<url>[^""\s>]*)\1[^>]*>(?<text>[\s\S]*?)</a>", RegexOptions.IgnoreCase);
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Groups["url"].Value + "\n";
        richTextBox2.Text += m.Groups["text"].Value + "\n";
    }
      

  2.   

    还有一个问题,我发现有的网址里在<a 标记里有其它的标记,像<a href="www.baidu.com"><font size=3>百度</font></a> 这里面的像<font之类的其它标记有没有办法除去呢?我现在正在努力学习正则,但是工作急用,请求高手帮助下,谢谢!
      

  3.   

    直接用正则剔除就可以了。
    <font[^>]*>[^<]*</font>
      

  4.   


    如果其它标签不好确定,那就对结果做下二次处理吧
    MatchCollection mc = Regex.Matches(yourStr, @"<a[^>]*href=(['""]?)(?<url>[^""\s>]*)\1[^>]*>(?<text>[\s\S]*?)</a>", RegexOptions.IgnoreCase);
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Groups["url"].Value + "\n";
        richTextBox2.Text += Regex.Replace(m.Groups["text"].Value, @"<[^>]*>", "") + "\n";
    }