要匹配html内容
   我在找的内容如下
   <tr></tr> 中的内容  里面的数据不规格,但是只有<td></td> or <td>数据<td></td>数据</td>
  有什么规则提取<tr></tr> 中的内容 
  

解决方案 »

  1.   


            string str = "...";
            System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"(?<=<tr>)(?<content>[^</tr>]*)(?=</tr>)", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
            System.Text.RegularExpressions.MatchCollection m = reg.Matches(str); //设定要查找的字符串
            for (int i = 0; i < m.Count; i++)
            {
                Response.Write(m[i].Groups["content"].ToString());
            }
      

  2.   

    ls还是要好好补习一下正则,你贴的正则这样的都无法匹配"<tr>fdafdasfdats</tr>"还是引用过客的一个正则好了。
    MatchCollection mc = Regex.Matches(yourStr,@"(?is)<tr[^>]*>(?><tr[^>]*>(?<b>)|</tr>(?<-b>)|(?:(?!</?tr\b).)*)*(?(b)(?!))</tr>")
    foreach(Match m in mc)
    {
        MessageBox.Show(m.Value);
    }
      

  3.   

    没看,如果不要<tr>和</tr>标记。可以这样
    private void TestRegex31()
    {
        string yourStr = "<tr>fdafdasfdats</tr>";
        MatchCollection mc = Regex.Matches(yourStr, @"(?is)(?<=<tr[^>]*>)(?><tr[^>]*>(?<b>)|</tr>(?<-b>)|(?:(?!</?tr\b).)*)*(?(b)(?!))(?=</tr>)");
        foreach (Match m in mc)
        {
            MessageBox.Show(m.Value);
        }
    }
      

  4.   


    string str= "1111<tr>2222</tr>3333";
    Match match1 = Regex.Match(str, @"<tr>(?<key>.*)</tr>", RegexOptions.IgnoreCase);
    string result = match1.Groups["key"].Value;
    结果 result= "2222";
      

  5.   


    这样不合适,比如:<tr>123</tr><tr>456></tr>
    你的Result="123</tr><tr>456>"
      

  6.   


    ^_^你的没考虑嵌套
    <tr>aaa<tr>bbbb</tr>aaa</tr>
    你的返回就成
    <tr>aaa<tr>bbbb</tr>这样了。