请问要匹配下面一段字符串中标签<div></div>里内容的正则表达式该如何写?<div class="error"><p>操作错误,原因如下:</p><p>您的指令错误。</p></div>匹配结果:“<p>操作错误,原因如下:</p><p>您的指令错误。</p>”若能将<p></p>标签匹配掉更好,或者我直接调用replace方法也没关系,重要的是前面能匹配出来。
谢谢大家!

解决方案 »

  1.   

    yourstr=Regex.Replace(yourstr,"<[^>]*?>","");
      

  2.   

    (?is)(?<=<div[^>]*?>)((?!<div[^>]*?>).)*?(?=</div>)你也可以用这个匹配你想要的结果
      

  3.   

    不好意思,刚没说清楚,前后面还有一串字符,但我只要中间的一段:<div><div><div class="error"><p>操作错误,原因如下:</p><p>您的指令错误。</p></div><p class="warning"><a href="redirect.asp" target="_blank">返回</a></p></div>
    </div>
    比如这个字符串呢?
      

  4.   


    void Main()
    {
    string str=@"<div><div><div class=""error""><p>操作错误,原因如下:</p><p>您的指令错误。</p></div><p class=""warning""><a href=""redirect.asp"" target=""_blank"">返回</a></p></div>
    </div>";
        foreach(Match m in Regex.Matches(str,@"(?is)(?<=<div\s*class=""error"">)((?!<div[^>]*?>).)*?(?=</div>)"))
    {
       Console.WriteLine(m.Value);
    }
    /*
    <p>操作错误,原因如下:</p><p>您的指令错误。</p>
    */
    }
      

  5.   

    thanks so much.
     
    请问前面的(?is)是表示IgnoreCase(忽略大小写)和Singleline(单行模式)吗?
      

  6.   

                string str = @"<div><div><div class=""error""><p>操作错误,原因如下:</p><p>您的指令错误。</p></div><p class=""warning""><a href=""redirect.asp"" target=""_blank"">返回</a></p></div></div>";
                Regex reg = new Regex(@"(?is)(?<=<div\s*class=""error""\s*>)(?:\s*<p>(.*?)</p>\s*)*(?=</div>)");
                foreach (Match m in reg.Matches(str))
                    foreach (Capture c in m.Groups[1].Captures)
                        Console.Write(c.Value);
                Console.ReadLine();
    //操作错误,原因如下:您的指令错误。