请教关于正则表达式匹配HTML标签内容的写法 请问要匹配下面一段字符串中标签<div></div>里内容的正则表达式该如何写?<div class="error"><p>操作错误,原因如下:</p><p>您的指令错误。</p></div>匹配结果:“<p>操作错误,原因如下:</p><p>您的指令错误。</p>”若能将<p></p>标签匹配掉更好,或者我直接调用replace方法也没关系,重要的是前面能匹配出来。谢谢大家! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 yourstr=Regex.Replace(yourstr,"<[^>]*?>",""); (?is)(?<=<div[^>]*?>)((?!<div[^>]*?>).)*?(?=</div>)你也可以用这个匹配你想要的结果 不好意思,刚没说清楚,前后面还有一串字符,但我只要中间的一段:<div><div><div class="error"><p>操作错误,原因如下:</p><p>您的指令错误。</p></div><p class="warning"><a href="redirect.asp" target="_blank">返回</a></p></div></div>比如这个字符串呢? 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> */} thanks so much. 请问前面的(?is)是表示IgnoreCase(忽略大小写)和Singleline(单行模式)吗? 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();//操作错误,原因如下:您的指令错误。 ACCESS数据库中支持这样的语法吗? 问个问题:二维数组循环输出 WCF中绑定类型说明里面的几个名词,求具体解释? 关于用户登录的问题 propertygrid的右边类型显示问题 xp上安装.net的问题,100分在线等 本人做的Xna 游戏实例 连载中 求C#写小游戏源码 ◆求教:如何为枚举写自定义的Parse? 请教一本C#的书,请大家给个建议 请教有谁用过Websharp框架 C# winform打印datagridview问题?菜鸟 求指导~
</div>比如这个字符串呢?
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>
*/
}
请问前面的(?is)是表示IgnoreCase(忽略大小写)和Singleline(单行模式)吗?
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();
//操作错误,原因如下:您的指令错误。