读书人

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

发布时间: 2013-02-28 11:33:09 作者: rapoo

正则表达式,去除嵌套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&uploadURL=%2FLcms%2FHTMLTemplate%2FTemplate1%2F..%2F..%2FFiles%2FFileUpload.ashx&useQueryString=false&requeueOnError=false&httpSuccess=&assumeSuccessTimeout=30&params=upload%3Dfile%26amp%3Bfilecode%3D88888&filePostName=Filedata&fileTypes=*.jpg&fileTypesDescription=select%20file&fileSizeLimit=4MB&fileUploadLimit=0&fileQueueLimit=1&debugEnabled=false&buttonImageURL=%2FLcms%2FHTMLTemplate%2FTemplate1%2F&buttonWidth=100&buttonHeight=30&buttonText=&buttonTextTopPadding=0&buttonTextLeftPadding=0&buttonTextStyle=color%3A%20%23000000%3B%20font-size%3A%2016pt%3B&buttonAction=-100&buttonDisabled=false&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);

读书人网 >C#

热点推荐