正则表达式可不可以匹配某个html标记之间的所有代码?

这个问题比较难表述。比如有一段这样的html代码:------<divid="a">......<divstyle="..">...</div>....这里有n个<div... 这个问题比较难表述。
比如有一段这样的html代码:
------
<div id="a"> ... ... <div style=".."> ...</div> ....
这里有n个<div>...</div>,n为未知数
</div>
-------
上述代码中,“<div id="a">”只出现了一次,且所有<div></div>均能够一一配对。且与<div id="a">相匹配的</div>前后均没有任何特殊的,可以用于判断的字符。
现在我想用正则表达式匹配 <div id="a"> 到与之相对应的</div>之间的所有字符,
但由于中间夹杂多个</div>,不能判断哪一个</div>才是我需要的结束条件。
不知道我的意思表达清楚了没有?
请问那个正则表达式应该怎样写?

因为我这里是一个类似小偷程序的asp程序,在服务器端执行,vbscript语法。
现在需要获取某个网页上的所有源代码后直接在服务器上提取<div id="a">...</div>之间的代码,然后稍微处理后直接保存到数据库中,与客户端是无关的。
因为不是在客户端进行,所以,不能使用客户端js下的document.getElementById("a").innerHTML这种方法。

我知道可以用for来寻找。但我想知道可不可以用正则表达式来实现。
又或者,还有没有别的方法可以实现?
展开
 我来答
aristotle9
2009-09-12 · TA获得超过253个赞
知道小有建树答主
回答量:247
采纳率:0%
帮助的人:219万
展开全部
正则表达式应该是可以的,不过没有尝试.如果中间的div没有嵌套可以用 <div id='a'>((?:<div [^>]*>.*<\/div>)+)<\/div>,具体情况具体分析.另外可以根据上下文来捕捉.

js可以在客户端操控dom,服务器端有时也要操作dom,dom的操作是有很多语言实现的,如java,javascript,php,asp,perl,python...几乎每个语言都有操作dom的库.函数名大同小异.
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
Microsoft.XMLDOM(XMLDOM)对象的属性和方法
nodeFromID
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wcwtitxu
2009-09-14 · TA获得超过456个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:157万
展开全部
涉及到 递归匹配

VBScript 里的正则做不到

ASP.NET 里的正则可以
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
binjly
2009-09-12 · TA获得超过3063个赞
知道大有可为答主
回答量:2017
采纳率:0%
帮助的人:2700万
展开全部
这要用到正则的“平衡组/递归匹配”:
<div id="a"[^>]*>[^<>]*(((?'Open'<div[^>]*>)[^<>]*)+((?'-Open'</div>)[^<>]*)+)*(?(Open)(?!))</div>

参考资料:正则表达式30分钟入门教程
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
皮学敖碧白
2019-03-30 · TA获得超过3659个赞
知道小有建树答主
回答量:3154
采纳率:26%
帮助的人:381万
展开全部
用正则向前查找和向后查找(JS不支持向后),还要贪婪模式!PHP的话
$re
=
'/(?<=\<div
class="a"\>).*(?=\<div\>)/i'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式