当前位置:编程学习 > C#/ASP.NET >>

求一div嵌套的正则表达式

比如:
<div class="Ccontent">
<div>
第20周太钢出厂价大幅上涨900元/吨,调价后冷轧协议价为18100元/吨,结算价为17500元/吨,热轧协议价为16900元/吨,结算价为16300元/吨;400系涨200协议价为9600元/吨,其中毛边优惠减少90元。目前无锡市场304/2B 2.0冷卷价格在17500元/吨。由于周一不锈钢市场价格已经小幅上涨,因此市场上对今日的出厂价格持观望态度。
</div>
<div> </div>
<div>  5月<span>11日</span>LME综合镍跌<span>70报收12960美元/吨,持仓83376,结算价12775,库存112308减少732吨。如无重大利好消息,LME综合镍的上涨行情也将会在结束。本轮上涨行情从3月30日左右开始,从技术路线上看,即将于本周结束。<br />
<br />
</span></div>
</div>

我想获取<div class="Ccontent">中的内容,正则表达式该如何写 --------------------编程问答-------------------- <div class="Ccontent" id="Ccontent"> 

document.getElementByid("Ccontent").innerHTML 获取Ccontent里面的所有字符

然后再把里面的html代码过滤掉 --------------------编程问答-------------------- 我主要是对各网站新闻进行采集了,
System.Net.WebRequest wReq;
System.Net.WebResponse wResp;
wReq = System.Net.WebRequest.Create(Web.ToString());
wResp = wReq.GetResponse();//获取Response

通过这样获取html的代码,然后再通过正则表达式来提取网站的内容信息 --------------------编程问答-------------------- 试试
<div class="Ccontent">\s*( <div>[\s\S]*? </div>\s*)*? </div> --------------------编程问答-------------------- 嵌套不是正則搞得定的。 --------------------编程问答--------------------


string strReg = "(?<=<div class=\"Ccontent\">\r\n"; 
strReg += "<div>)(?<A0>.+?)(?=</div>)";
--------------------编程问答--------------------

//例
            string input = @"<div id=""a"">AAA<div id=""b"">BB<div id=""c"">CCC</div> B</div> </div> ";
            string id = Console.ReadLine();  //输入要取得div的id
            while (id.Trim().ToUpper().CompareTo("G")!=0)
            {
                string pattern = @"<div id=""" + id + @""">[^<>]*(((?'Open'<div[^>]*>)[^<>]*)+((?'-Open'</div>)[^<>]*)+)*(?(Open)(?!))</div>";
                Console.WriteLine(Regex.Match(input, pattern));
                id = Console.ReadLine();
            }

--------------------编程问答-------------------- mark先 --------------------编程问答--------------------

@"(?is)<div class=""Ccontent"">.*?(((?'Open'<div[^>]*>).*?)+((?'-Open'</div>).*?)+)*(?(Open)(?!))</div>"
// 我试了一下可以 

--------------------编程问答-------------------- C# winform,webform 开发讨论群,
欢迎新手,高手
群号:57718204

给你个pattern


pattern = string.Format("<(\\S*?)[^>]*id=(['|\"]){0}(\\2)[^>]*>(?><\\1[^>]*?>(?<n>)|</\\1>(?<-n>)|(?!<\\1[^>]*?>|</\\1>).)*(?(n)(?!))</\\1>", id);
--------------------编程问答-------------------- 效率不是很好,不过可以取出来,如果网页写的不标准的话,就取不出来... --------------------编程问答-------------------- up --------------------编程问答-------------------- 通过ID处理嵌套HTML标签 --------------------编程问答-------------------- 涉及到嵌套的,用正则肯定要用平衡组了

Regex reg = new Regex(@"<div\s*class=""Ccontent""[^>]*>(((?<o>)<div[^>]*>|(?<-o>)</div>|(?:(?!</?div)[\s\S]))*)(?(o)(?!))</div>", RegexOptions.IgnoreCase| RegexOptions.Compiled);
Match m = reg.Match(yourStr);
if (m.Success)
{
    richTextBox2.Text = m.Value;
}


当然,涉及到效率问题的时候,就要综合考虑了,可以参考这个帖子中我的回复
求一正则表达式 --------------------编程问答-------------------- 学习
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,