首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

正则表达式,去除嵌套div有关问题

2013-02-28 
正则表达式,去除嵌套div问题源html代码如下:div idpromodiv iddeletedivdiv styleheight: 30

正则表达式,去除嵌套div问题
源html代码如下:

<div id="promo">
    <div id="deletediv">
        <div style="height: 30px; width: 100px;" class="uploadify" id="file_upload1">
            <object style="position: absolute; z-index: 1;" id="SWFUpload_0" type="application/x-shockwave-flash"
                data="js/jquery.uploadify/uploadify.swf?preventswfcaching=1361958323822" class="swfupload"
                height="30" width="100">
                <param name="wmode" value="transparent">
                <param name="movie" value="js/jquery.uploadify/uploadify.swf?preventswfcaching=1361958323822">
                <param name="quality" value="high">
                <param name="menu" value="false">
                <param name="allowScriptAccess" value="always">
                <param name="flashvars" value="movieName=SWFUpload_0&amp;uploadURL=%2FLcms%2FHTMLTemplate%2FTemplate1%2F..%2F..%2FFiles%2FFileUpload.ashx&amp;useQueryString=false&amp;requeueOnError=false&amp;httpSuccess=&amp;assumeSuccessTimeout=30&amp;params=upload%3Dfile%26amp%3Bfilecode%3D88888&amp;filePostName=Filedata&amp;fileTypes=*.jpg&amp;fileTypesDescription=select%20file&amp;fileSizeLimit=4MB&amp;fileUploadLimit=0&amp;fileQueueLimit=1&amp;debugEnabled=false&amp;buttonImageURL=%2FLcms%2FHTMLTemplate%2FTemplate1%2F&amp;buttonWidth=100&amp;buttonHeight=30&amp;buttonText=&amp;buttonTextTopPadding=0&amp;buttonTextLeftPadding=0&amp;buttonTextStyle=color%3A%20%23000000%3B%20font-size%3A%2016pt%3B&amp;buttonAction=-100&amp;buttonDisabled=false&amp;buttonCursor=-2">
            </object>
            <div style="height: 30px; line-height: 30px; width: 100px;" class="uploadify-button uploadbutton"
                id="file_upload1-button">
                <span class="uploadify-button-text">图片</span></div>
        </div>
        <div class="uploadify-queue" id="file_upload1-queue">
        </div>
    </div>
    <img id="img1custmor" src="" style="display: none;">
</div>

使用正则,把<div id="deletediv">包含的内容全部替换掉,怎么做?

谢谢 正则表达式 div
[解决办法]
help up.
------解决方案--------------------


不知道想表达的意思。
把div内容全部替换吗?只用简单的JS或者JQuery就可以实现。正则大多用于验证,LZ想验证什么东西?
[解决办法]
笨一点的方法就这样吧。
<div id="deletediv"><div[\s\S]*?class="uploadify" id="file_upload1">[\s\S]*?</div>\s*</div>\s*<div[\s\S]*?>[\s\S]*?</div>\s*</div>

不要不然就得写嵌套的了。
[解决办法]
可能参照这个
http://www.cnblogs.com/wonderfuly/archive/2011/07/18.html

<(?<HtmlTag>div)[^>]*\sid=(?<Quote>["']?)deletediv(?(Quote)\k<Quote>)["']?[^>]*>((?<Nested><\k<HtmlTag>[^>]*>)
[解决办法]
</\k<HtmlTag>>(?<-Nested>)
[解决办法]
[\s\S]*?)*</\k<HtmlTag>>
[解决办法]

  string str = System.IO.File.ReadAllText("D:\\1.txt", Encoding.Default);
            str = Regex.Replace(str, @"(?is)<div\s*id=""deletediv"">((?<g><div)
[解决办法]
(?<-g></div>)
[解决办法]
(?!</?div).)*(?(g)(?!))</div>", "");
         

[解决办法]
如果仅把<div id="deletediv"></div>内部的去掉,这么写:
string s = File.ReadAllText(Server.MapPath("~/test.txt"), Encoding.GetEncoding("gb2312"));
string r = Regex.Replace(s, @"(?is)(?<=<div id=""deletediv"">)((?<Open><div[^>]*>)
[解决办法]
(?<-Open></div>)
[解决办法]
.*?)*?(?(Open)(?!))(?=</div>)", string.Empty);
Console.WriteLine(r);

如果是把<div id="deletediv"></div>整个标签去掉,这么写:
string s = File.ReadAllText(Server.MapPath("~/test.txt"), Encoding.GetEncoding("gb2312"));
string r = Regex.Replace(s, @"(?is)<div id=""deletediv"">((?<Open><div[^>]*>)
[解决办法]
(?<-Open></div>)
[解决办法]
.*?)*?(?(Open)(?!))</div>", string.Empty);
Console.WriteLine(r);

[解决办法]
string result = Regex.Replace(s, @"(?is)<div\s*id=""deletediv"">((?<Open><div>)
[解决办法]
(?<-Open></div>)
[解决办法]
.*?)*?(?(Open)(?!))</div>", string.Empty);

热点排行