string content = "</h1><h1 class='result'>有10,285个结果</h1></h1>";
string pattern = @"</h1><h1 class='result'>有\d*\,?\d*个结果</h1></h1>";可以匹配成功,我想问的是,如何利用 Match 对象将匹配的部分取出来,即 将 "10,285" 这串字符取出来??

解决方案 »

  1.   

      private string[] FindPatternList(string pattern, string strHtml)
        {
            if (strHtml == null || pattern == null)
                return null;        MatchCollection mcs = Regex.Matches(strHtml, pattern);
            string[] lst = new string[mcs.Count];
            for (int i = 0; i < mcs.Count;i++ )
            {
                lst[i] = mcs[i].Value;
            }
            return lst;
        }
      

  2.   

    string   pattern   =   @ " </h1> <h1   class= 'result '> 有(<?result>\d*\,?\d*)个结果 </h1> </h1> "; 
     Regex r = new Regex(pattern , RegexOptions.Compiled);
    r.Match(内容).Result("${result}"); 
      

  3.   


    (?<=<h1\s+.*?>)(\s+[\u4e00-\u9fa5]+)(?<value>.*?)([\u4e00-\u9fa5]+\s+)(?=</h1>)//取出的value组就是楼主所想要的
      

  4.   


    string pattern = @"(?<=<h1\s+.*?>)(\s+[\u4e00-\u9fa5]+)(?<value>.*?)([\u4e00-\u9fa5]+\s+)(?=</h1>)";
    string content=@"</h1> <h1   class= 'result '> 有10,285个结果 </h1> </h1>";
    Regex r = new Regex(pattern);
    string result=r.Match(content).Result("${value}");
     
      

  5.   

    ETstudio 兄  用了你的方法 报错了 源程序
    string content = "</h1><h1 class='result'>有10,285个结果</h1></h1>";
            string pattern = @"</h1><h1 class='result'>有(<?result>\d*\,?\d*)个结果</h1></h1>";
           
            Regex _r = new Regex(pattern,RegexOptions.Compiled);
            string a = _r.Match(content).Result("${result}");
            Response.Write(a);报错:
    异常详细信息: System.NotSupportedException: 不能对失败的匹配调用结果。行 20:         
    行 21:         Regex _r = new Regex(pattern,RegexOptions.Compiled);
    行 22:         string a = _r.Match(content).Result("${result}");
    行 23:         Response.Write(a);
    行 24: 
     源文件: d:\程序\DotNet技术\视频搜索\soVideo\WebSite\testRegex.aspx.cs    行: 22 
      

  6.   

    symbol441 兄 你说得啥意思?
      

  7.   

    我的错,不好意思,老是粗心
      string   content   =   @" </h1> <h1   class= 'result '> 有10,285个结果 </h1> </h1> ";
            string pattern = @"(?<result>\d+,\d+)"; 
                  
                    Regex   _r   =   new   Regex(pattern,RegexOptions.Compiled);
                    Match _m = _r.Match(content);
                    while (_m.Success)
                    {
                        string a = _r.Match(content).Result("${result}");
                        Console.Write(a);
                        _m = _m.NextMatch();
                    }
      

  8.   

    成功了,谢谢 ETstudio 兄!
      

  9.   


    string content = "</h1><h1 class='result'>有10,285个结果</h1></h1>"; 
    string pattern = @"</h1><h1\s*class='result'>有(?<num>\d*,?\d*)个结果</h1></h1>";
    Match m = Regex.Match(content, pattern, RegexOptions.IgnoreCase);//m.Groups["num"] is your need 
      

  10.   

    string content = "</h1><h1 class='result'>有10,285个结果</h1></h1>"; 
    string pattern = @"</h1><h1\s*class='result'>有(?<num>\d*,?\d*)个结果</h1></h1>";
    Match m = Regex.Match(content, pattern, RegexOptions.IgnoreCase);
    if(m.Sucess)
    {
      string str=m.group["num"].Value.ToString();
    }
      

  11.   

    reg.getsinglesubvalue("</h1> <h1   class= 'result '> 有10,285个结果 </h1> </h1>","有(\d+,?\d+)个结果")