用谷歌搜 金属手机 得到的htm部分打码如下:<div class="med" id="res" role="main"> <div id="topstuff">   <div class="std stp">可直接输入手机号码来查它的归属地 [<a href=/intl/zh-CN/help/features.html#mobile>细节</a>]。</div>     </div> <div id="search">   <h2 class="hd">搜索结果</h2> <div id="ires">    <ol eid="bYV0T4f3D--fiAfYz-3jDw" id="rso"><li class="g"><div class="vsc" pved="0CD8QkgowAA" bved="0CEAQkQo" sig="2W8"><h3 class="r"><a href="http://mobile.pconline.com.cn/guide/1005/2133758.html" target=_blank class=l onmousedown="return rwt(this,'','','','1','AFQjCNFeuwbmfUqu_phlSwP5Ep2OsdDcaQ','','0CEYQFjAA',null,event)">塑料外壳没质感潮人必选<em>金属手机</em>搜罗_手机导购 - 手机- 太平洋电脑网</a></h3><div class="s"><div class="f kv"><cite><span class=bc>mobile.pconline.com.cn &rsaquo; <a href="/url?url=http://mobile.pconline.com.cn/guide/&amp;rct=j&amp;sa=X&amp;ei=bYV0T4f3D--fiAfYz-3jDw&amp;ved=0CEQQ6QUoADAA&amp;q=%E9%87%91%E5%B1%9E%E6%89%8B%E6%9C%BA&amp;usg=AFQjCNFjgc8LU01Xv9xYdIIyi5zoS7B92w" target=_blank>手机导购</a></span></cite><span class="gl"> 要捕获<h3 class="r"><a href="http://mobile.pconline.com.cn/guide/1005/2133758.html"中的网址。我用表达式:<h3 class="r"><a href="(?<key>[^"]+)" 在正则表达式测试工具里可以。
但是在c#里得到的是="/url?url=http://mobile.pconline.com.cn/guide/&amp;rct=j&amp;sa=X&amp;ei=bYV0T4f3D--fiAfYz-3jDw&amp;ved=0CEQQ6QUoADAA&amp;q=%E9%87%91%E5%B1%9E%E6%89%8B%E6%9C%BA&amp;usg=AFQjCNFjgc8LU01Xv9xYdIIyi5zoS7B92w我用:"><h3 class="r"><a href="(?<key>[^"]+)"  或 "><h3 class="r"><a href="(?<key>[^"]+)" target=_blank class=l onmousedown=  就捕获不到。在MTracer正则表达式工具里面都可以捕获。O(∩_∩)O谢谢

解决方案 »

  1.   

    (?is)<h3 class="r"><a href="(?<key>[^"]+)"\s*[^>]*>.*?</a>在C#要这样写
    (?is)<h3 class=""r""><a href=""(?<key>[^"]+)""\s*[^>]*>.*?</a>取值  m.Group["key"].Value//http://mobile.pconline.com.cn/guide/1005/2133758.html
      

  2.   

    试过了,还是不对啊 
    用这个(?is)<h3 class=""r""><a href=""(?<key>[^""]+)""\s*[^>]*>.*?</a>还是不行
      

  3.   

    不好意思,少写个引号(?is)<h3 class=""r""><a href=""(?<key>[^""]+)""\s*[^>]*>.*?</a>            string sourcestr = File.ReadAllText(@"C:\3.txt", Encoding.GetEncoding("GB2312"));
                Regex regx = new Regex(@"(?is)<h3 class=""r""><a href=""(?<key>[^""]+)""\s*[^>]*>.*?</a>");
                string ll = regx.Match(sourcestr).Groups["key"].Value;//http://mobile.pconline.com.cn/guide/1005/2133758.html
      

  4.   

    你的引号我是加上测试,原来这样的 用你的代码可以捕获的。
    我用的集合:
    string sourcestr = this.textBox1.Text;
    string zz=@"(?is)<h3 class=""r""><a href=""(?<key>[^""]+)""\s*[^>]*>.*?</a>";
    MatchCollection mc = Regex.Matches(sourcestr,zz,RegexOptions.None); 
    this.textBox1.Text="";
    foreach(Match mcc in mc)
    {
    this.textBox1.Text+=mcc.Groups["key"].Value+"|";
    }出来的值都带有/url?q=的 也就是匹配了别的二个结果不一样,晕啊
      

  5.   

    知道了,在程序里下载下来的htm和在浏览器查看源文件看到的(上面的)不一样。
    谢了
      

  6.   

    另外this.textBox1.Text+=mcc.Groups[ "key "].Value+ "| ";红色部分不要有空格