当前位置:编程学习 > 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">中的内容,正则表达式该如何写 --------------------编程问答-------------------- 把它当成XML的内容

这样直接取class="Ccontent"的内容

用正则的话,可能会比较麻烦一些 --------------------编程问答-------------------- "Ccontent\">.*?<div>.*?</div>.*?<div>.*?</div>.*?<div>.*?</div>" --------------------编程问答-------------------- 正则提纯文本太麻烦了…… --------------------编程问答-------------------- 也许: <div class="Ccontent"><div>.*</div></div>之前先去掉回车和空格。

--------------------编程问答-------------------- 关键是里面的<div>可能是不定的啊,如果是固定的话,用正则倒好办 --------------------编程问答-------------------- 试试
<div class="Ccontent">\s*(<div>[\s\S]*?</div>\s*)*?</div> --------------------编程问答-------------------- 建议用 regex.Replace,来去掉所有的<>标记.余下的就是你想要的.
string str=regex.Replace(str,"<.+?>","") --------------------编程问答-------------------- string str=Regex.Replace(str,"<.+?>","") --------------------编程问答-------------------- 直接用innerHTML呀 方便 --------------------编程问答--------------------

 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();
            }


--------------------编程问答--------------------
引用 10 楼 Harvey_He 的回复:
C# code
 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>";
           …

呵呵 哥们 这是我的原创阿 --------------------编程问答--------------------
引用 11 楼 wackyboy 的回复:
引用 10 楼 Harvey_He 的回复:
C# code 
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>)…

呵呵,你是在我给的方法上改的 --------------------编程问答--------------------
引用 12 楼 Harvey_He 的回复:
引用 11 楼 wackyboy 的回复:
引用 10 楼 Harvey_He 的回复: 
C# code 
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[^>]…

呵呵 我说怎么看着这么眼熟呢
不过还真的感谢你啊 
我那天写了一下 总差点东西 后来一看你那个才恍然大悟 呵呵 --------------------编程问答-------------------- 不过这个得用这个吧 我觉得

@"(?is)<div class=""Ccontent""> .*?(((?'Open'<div[^>]*>).*?)+((?'-Open'</div>).*?)+)*(?(Open)(?!))</div>"
// 我试了一下可以 
--------------------编程问答-------------------- 这个主要用到平衡组的匹配 --------------------编程问答-------------------- class="Ccontent">(?<content>[\s\S]+)</div>
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,