用c#中正则表达式如何实现文本如下:
<!-- start -->
<pre>
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</pre>
<!-- end --> 第1步:请教高手取出<!--start--><!--end-->中的内容得到以下结果:
<pre>
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</pre>
第2步:取出<pre></pre>中的内容得到以下结果:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa谢谢

解决方案 »

  1.   

    <!-- start -->\s*(<pre>\s*(.+?)\s*</pre>)\s*<!-- end -->
      

  2.   

    string str = @" 
    <!-- start -->
    <pre>
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    </pre>
    <!-- end -->";
     
    Regex reg = new Regex(@"<!-- start -->(\s*?<pre>([\s\S]*?)</pre>)\s*<!-- end -->");
    MatchCollection ms = reg.Matches(str);
    foreach(Match m in ms)
    {
    Response.Write(Server.HtmlEncode(m.Result("$1")));
    Response.Write(m.Result("$2"));
    }
      

  3.   

    表达式@"<!-- start -->([\s\S]*?<pre>([\s\S]*?)</pre>[\s\S]*?)<!-- end -->"
      

  4.   

    cpp2017(慕白兄):上次回复的取不出下面的<pre></pre>中的内容啊
    <!-- start -->\n详细信息:<br><br>
    <pre>\nsfdsfsdfsdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n</pre>
    \n<!-- end -->
      

  5.   

    cpp2017(慕白兄) 的正则还是可以的 只是考虑不全
    我现在对付空格部分全部都使用 [\s\S]*?
    HTML千变万化实在有点麻烦 为了适应各种可能性还是考虑全面一点得好
    例如使用
    <(xxx)(?=[\s>])[^>]*>[\s\S]*?</\1>
    来匹配所有无嵌套的带关闭标签的HTML标签才能算完美
    千万不要用MSDN上面那个不负责任的表达式