比如
<li class="list-item"><div><ul><li>abc</li></div></li>
我想取整个外层的li
于是我用了正则
<li\s*class="list-item"[^>]*?>([\s\S]*?)<\/li>但取出的是
<li class="list-item"><div><ul><li>abc</li>
后面的</div></li>丢了请问如何才能全部取到外层的li

解决方案 »

  1.   

    你需要用到平衡组,代码如下 Regex reg = new Regex(@"(?isx)<li[^>]*?class=(['""]?)list-item\1[^>]*?>(?><li[^>]*>  (?<Open>)|</li>  (?<-Open>)|(?:(?!</?li\b).)*)*(?(Open)(?!))</li>");
                string tempStr = @"<li class=""list-item""><div><ul><li>abc</li></div></li>";
                tempStr = reg.Match(tempStr).Value;
                //<li class=\"list-item\"><div><ul><li>abc</li></div></li>
      

  2.   


    具体可以参考下.NET正则基础之——平衡组 .