代码段:<ul>
<li>A</li>
</ul><ul>
<li>B</li>
</ul>我想找的是 <li>A</li> 和 <li>B</li> ,但用正则表达式得到的结果却是<li>A</li>
</ul><ul>
<li>B</li>哪位高手可以告知一下如果得到我想要的结果。严重感谢啊。

解决方案 »

  1.   

    MatchCollection mac = Regex.Matches(str, @"<li>\w{1}\s*</li>");
      

  2.   

    这算不得嵌套,估计是楼主错误的使用贪婪模式造成的错误结果MatchCollection mc = Regex.Matches(yourStr, @"(?i)<li>(?:(?!</li>).)*</li>");
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Value + "\n";
    }
      

  3.   

    顶过客 
    这样也可以吧"(?is)<li>.*?</li>"
      

  4.   

    谢谢楼上各位的回答,问题还是没有解决,但得到了解决的思路,“过客”将的很对,是我使用贪婪模式造成的,不过我现在还没有解决问题。因为顶楼提问时的例子是我把复杂问题简单化了的,实际的情况比问题中的例子要复杂一些。我的正则表达式是一头雾水加一头面粉等于一头浆糊:-(,还请个问能再次帮我解决一下这个问题,因为这个问题在我的整个项目中仅使用这一次,而且时间赶的比较紧,我就不要渔了,哪位直接授我一条鱼吧,等忙过这段时间我会恶补一下正则的。情况是:<ul style="font-size:12px;display=none;" class="classname"> 
    <li>stringA </li> 
    </ul> <ul> 
    <li>stringB </li> 
    </ul> <ul id="ulID" class="classname"> 
    <li>stringC </li> 
    </ul> <ul style="font-size:12px;display=none;">
    <li>stringC </li> 
    </ul> 
    我想找的是形如 <li>stringA </li> , <li>stringB</li>   <li>stringC</li>的部分。谢谢各位不吝赐教,万分感谢。