<div>
<table   width= "100% "   height= "100% "   bgcolor= "#eeeeee ">
  <tr>
    <td   width= "100% "><loop>   Category  </loop> </td>         <!--注意:Category前后均可能有或无空格字符-->
  </tr>
  <tr>
    <td   width= "100% "> DataBase   </td>         <!--注意:DataBase前后均可能有或无空格字符-->
  </tr>
</table>
</div>
 
如何一次性匹配:
1、整个文本块。
2、<loop>.*</loop>块(包含loop标签)。
3、loop之间的块(不包含loop标签的内容块)。
谢谢。

解决方案 »

  1.   

    try...            Regex reg = new Regex(@"(?is)<div[^>]*>(?:(?!</?(?:div|loop)).)*(<loop>((?:(?!</?(?:div|loop)).)*)</loop>)(?:(?!</?(?:div|loop)).)*</div>");
                MatchCollection mc = reg.Matches(yourStr);
                foreach (Match m in mc)
                {
                    richTextBox2.Text += m.Groups[0].Value + "\n========================\n";
                    richTextBox2.Text += m.Groups[1].Value + "\n========================\n";
                    richTextBox2.Text += m.Groups[2].Value + "\n========================\n";
                }
      

  2.   


    那就分开来取,先取div
    (?is)<div[^>]*>.*?</div>
    然后取loop
    (?is)<loop[^>]*>.*?</loop>
    能取到的就是你要的,取不到的就不是了
      

  3.   

    用juery 试了一下 居然不行
      <script type="text/javascript" src="../static/js/jquery-1.4.2.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                //alert($('#loop1').parent().children().length)
                alert($('#loop1').html())
                alert($('loop').html())
            }
        );