再问一个正则有关问题
再问一个正则问题?
这是我写的一个正则,用来匹配data_id和它后面的字符串的,这个是正确的。
我现在想实现得到以下结果:
<div class="slide drag" id="slide" data_id="pic" data_tit="幻灯片1"><div class="box"><ul class="list"> 11111111</ul></div></div>
和
<dl class="ann bd_01 drag" Data_ID="pic3" data_tit="幻灯片2"><dt>{$notice_title}</dt> <dd id="ad"><ul><li i="{notice1.i}">333333</li></ul></dd></dl>
这两个字符串,能否实现?
------解决方案--------------------
dl的好匹配,主要是div里面又嵌套了div,这个难弄。。。
嵌套的只能写HTMLParser之类的东东来分析html结构
<script language="javascript" runat="server">
function getDataId(str)
{
var v="",str2="";
var v1;
v1=str.match(/data_id="\w+"/gi);
if(v1!="")
{
var v2=new Array();
v2=(v1+'').split(',');
var current="";
for(i=0;i<v2.length;i++)
{
current=v2[i].toString();
str2+=current+"<hr>";
}
}
return str2;
}
</script>
<%
str="<div id=""body"" class=""dragZone""><div class=""main""><div class=""wrap""><div class=""dragWrap""><div class=""slide drag"" id=""slide"" data_id=""pic"" data_tit=""幻灯片1""><div class=""box""><ul class=""list"">11111111</ul></div></div></div><div class=""box_01 mt-20 cf""><div class=""ann_wrap dragWrap""><dl class=""ann bd_01 drag"" Data_ID=""pic3"" data_tit=""幻灯片2""><dt>{$notice_title}</dt><dd id=""ad""><ul><li i=""{notice1.i}"">333333</li></ul></dd></dl></div></div></div></div></div>"
response.write getDataId(str)
%>
这是我写的一个正则,用来匹配data_id和它后面的字符串的,这个是正确的。
我现在想实现得到以下结果:
<div class="slide drag" id="slide" data_id="pic" data_tit="幻灯片1"><div class="box"><ul class="list"> 11111111</ul></div></div>
和
<dl class="ann bd_01 drag" Data_ID="pic3" data_tit="幻灯片2"><dt>{$notice_title}</dt> <dd id="ad"><ul><li i="{notice1.i}">333333</li></ul></dd></dl>
这两个字符串,能否实现?
------解决方案--------------------
dl的好匹配,主要是div里面又嵌套了div,这个难弄。。。
嵌套的只能写HTMLParser之类的东东来分析html结构
function getDataId(str) {
var str2 = "";
var v1 = str.match(/<([a-z]+) [^>]+?data_id[\s\S]+?<\/\1>/gi);
if (v1) {
var current = "";
for (i = 0; i < v1.length; i++) {
current = v1[i].toString();
if (current.indexOf('<div') == 0) current += '</div>';//按照你原来的结构不全div,如果有多组嵌套的,上面的正则也无法使用
str2 += current + "<hr>";
}
}
return str2;
}