亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Regex > 正文

Java/Js下使用正則表達式匹配嵌套Html標簽

2020-03-16 21:12:53
字體:
來源:轉載
供稿:網友
以前寫過一篇文章講解如何使用正則表達式完美解決Html嵌套標簽的匹配問題(使用正則表達式匹配嵌套Html標簽),但是里頭用到了平衡組這樣的高級特性,貌似只有DotNet還有Perl正則引擎支持,因此通用性不高。
 
 
通用 HTML 標簽區配正則 

最近看網站日志,發現有人在博客上轉了我不知道幾年前寫的一個匹配 HTML 標簽的正則,剛好最近也在做一些相關的事情,頓時來了興趣。就拿回來改改,成了下面這樣,可能會有一些 case 遺漏,歡迎修改,已知在內嵌 <script> 復雜內容的處理能力較弱,不過對純 HTML 來說已經夠用,拿來做一些分析工具還是不錯滴。 
復制代碼代碼如下:

<script type="text/javascript"> 
var str = "<br /><br/><br><br ><中文><div><div id=a>無憂腳本<img src=/"http://bbs.vevb.com/images/default/logo.gif/" width=/"191/" height='75' border=0 onload=/"if(testver>0 && testver<500)alert('test');/" /n onerror='alert(/"test/")' /><img src=xxx />
復制代碼代碼如下:

java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index XX 

在網上搜了好久也沒找到完美的解決方案。不過,我們可以實現有限級Html嵌套標簽匹配。思路相對于無限級來說就簡單了好多,不需要那么多高級的特性。 
示例: 
復制代碼代碼如下:

<div id='container'><BR> <div style='background-color:gray;' id='footer'><BR> <a id='gotop' href='#' onclick='MGJS.goTop();return false;'>Top</a><BR> <a id='powered' href='http://wordpress.org/'>WordPress</a><BR> <div id='copyright'><BR> Copyright © 2009 簡單生活 —— Kevin Yang的博客<BR> </div><BR> <div id='themeinfo'><BR> Theme by <a href='http://www.neoease.com/'>mg12</a>. Valid <a href='http://validator.w3.org/check?uri=referer'>XHTML 1.1</a><BR> and <a href='http://jigsaw.w3.org/css-validator/'>CSS 3</a>.<BR> </div><BR> </div><BR></div> 

在上面這個示例中,我們打算匹配id為footer的這個嵌套div,而且假設我們預先知道footer這個div里面最多只會嵌套一級div。更多級的情況我們一會兒再講。 
footer的開始和結束標簽匹配很簡單: 
復制代碼代碼如下:

<div [^>]*id='footer'[^>]*>......(這里的省略號是一會要填寫的)</div> 
 

夾在開始和結束標簽之間的內容無非有兩種情況: 
內容A: div標簽,并且此div內無嵌套div 
內容B: 任意其他內容 
然后就是這兩種內容的不斷重復而已。正則表示如下: 
復制代碼代碼如下:

(<div[^>]*>.*?</div>|.)*? 

注意最后面的問號必須要加上,否則由于正則的貪婪匹配特性,footer的閉合標簽會匹配失誤。 
OK了,匹配最多嵌套一級div的正則表達式如下: 
復制代碼代碼如下:

<div [^>]*id='footer'[^>]*>(<div[^>]*>.*?</div>|.)*?</div> 

那么如果footer標簽里頭最多會嵌套兩級div的話怎么辦呢? 
其實也不難,我們只需要把上面的“內容A”部分中的點號稍作替換即可。修改如下: 
復制代碼代碼如下:

<div [^>]*id='footer'[^>]*>(<div[^>]*>(<div[^>]*>.*?</div>|.)*?</div>|.)*?</div> 

到這里你可能就知道,如果要匹配最多嵌套三級div的話,正則應該怎么寫了: 
復制代碼代碼如下:

<div [^>]*id='footer'[^>]*>(<div[^>]*>(<div[^>]*>(<div[^>]*>.*?</div>|.)*?</div>|.)*?</div>|.)*?</div> 

所以實際上,只要你的html結構不是特別復雜的話,也就是說嵌套不會很深的話,那么你完全可以使用這種方式來匹配嵌套html標簽。 
這個正則在Java和Javascript中都可以使用,因為它沒有用到任何高級特性。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久中文字幕| 日韩精品在线免费| 国产精品激情av在线播放| 欧美野外wwwxxx| 国产精品中文字幕久久久| 欧美性视频精品| 久久久视频免费观看| 亚洲xxx视频| 国产精品国语对白| 久久九九亚洲综合| 国产精品99蜜臀久久不卡二区| 亚洲欧洲高清在线| 91日本视频在线| 国产综合在线视频| 久久久久国色av免费观看性色| 国产精品欧美风情| 亚洲欧美精品伊人久久| 日韩av一区在线| 欧美成人三级视频网站| 亚洲色图欧美制服丝袜另类第一页| 91免费欧美精品| 精品日韩美女的视频高清| 国产日产欧美精品| 亚洲日本欧美日韩高观看| 国产精品永久免费观看| 2019中文字幕在线免费观看| 成人高清视频观看www| 亚洲免费av电影| 亚洲天堂av在线免费| 中文字幕久久亚洲| 国产专区欧美专区| 青青久久av北条麻妃海外网| 欧美性高跟鞋xxxxhd| 亚洲国产欧美自拍| 成人欧美一区二区三区黑人| 伊人亚洲福利一区二区三区| 久久久久久com| 亚洲精品xxxx| 国产有码在线一区二区视频| 丝袜美腿精品国产二区| 亚洲欧美日韩一区二区在线| 免费97视频在线精品国自产拍| 久久久久久久久久久人体| 一区二区三区视频免费在线观看| 日韩电影中文字幕| 久久人人爽人人爽人人片亚洲| 97成人精品视频在线观看| 亚洲最大激情中文字幕| 欧美日韩国产精品专区| 国产精品久久久一区| 一区二区三区 在线观看视| 欧美高清一级大片| 91在线观看免费高清| 成人字幕网zmw| 国产亚洲欧美视频| 日韩精品高清在线观看| 午夜精品福利在线观看| 国产精品永久免费观看| 精品精品国产国产自在线| 久久精品免费播放| 国产精品99久久久久久www| 97在线精品国自产拍中文| 国产在线拍偷自揄拍精品| 国产欧美日韩丝袜精品一区| 色噜噜狠狠狠综合曰曰曰| 欧美日韩xxx| 韩剧1988免费观看全集| 国产69久久精品成人| 91久久精品在线| 亲子乱一区二区三区电影| 91九色精品视频| 日韩有码片在线观看| 国产精品普通话| 亚洲午夜精品久久久久久性色| 国产精品99免视看9| 国产午夜精品全部视频在线播放| 78m国产成人精品视频| 久久久噜噜噜久久中文字免| 亚洲国产美女精品久久久久∴| 精品国产拍在线观看| 亚洲自拍欧美另类| 久久精品美女视频网站| 亚洲一区二区三区毛片| 久久精品久久久久电影| 国产福利精品在线| 国产精品亚洲аv天堂网| 亚洲最大福利视频网站| 亚洲一区二区久久久久久久| 亚洲成人黄色在线| 97超级碰碰碰久久久| 亚洲欧美国产一区二区三区| 日韩亚洲欧美中文高清在线| 亚洲美女久久久| 激情懂色av一区av二区av| 欧美激情国产精品| 国产精品久久久久久久久久久久久| 国产精品第七十二页| 久热99视频在线观看| 欧美中文字幕视频在线观看| 一本色道久久综合狠狠躁篇的优点| 亚洲爱爱爱爱爱| 97视频免费在线观看| 亚洲精品视频网上网址在线观看| 国产xxx69麻豆国语对白| 亚洲自拍偷拍网址| 国产精品国产三级国产aⅴ9色| 国产精品永久免费| 中文欧美日本在线资源| xxxx性欧美| 久久综合电影一区| 国产成人精品a视频一区www| 成人日韩在线电影| 亚洲午夜精品久久久久久久久久久久| 久久99亚洲热视| 视频直播国产精品| 中文欧美在线视频| 日韩毛片在线观看| 超碰97人人做人人爱少妇| 亚洲欧美中文字幕在线一区| 97久久精品人人澡人人爽缅北| 亚洲精品丝袜日韩| 亚洲人成电影网站| 日本久久精品视频| xx视频.9999.com| 51ⅴ精品国产91久久久久久| 91精品国产91久久久久久吃药| 亚洲精品久久久久中文字幕欢迎你| 国产欧美精品va在线观看| 久久久精品久久| 欧美日韩国产一区二区三区| 欧美日韩电影在线观看| 黑人巨大精品欧美一区二区三区| 久久久久久亚洲精品| 成人日韩av在线| 精品电影在线观看| 96精品久久久久中文字幕| 国产精品普通话| 亚洲精品国产美女| 国产综合在线视频| 日本午夜在线亚洲.国产| 欧美精品成人91久久久久久久| 毛片精品免费在线观看| 亚洲欧美一区二区三区在线| 国产精品免费一区| 91av在线免费观看视频| 粉嫩老牛aⅴ一区二区三区| 美日韩在线视频| 精品性高朝久久久久久久| 欧美与欧洲交xxxx免费观看| 中文字幕最新精品| 久久夜色精品亚洲噜噜国产mv| 国产一区二区三区毛片| 91久热免费在线视频| 亚洲乱码国产乱码精品精| 国产精品免费观看在线| 亚洲a一级视频| 欧美激情视频播放| 亚洲性夜色噜噜噜7777| 亚洲爱爱爱爱爱| 国产精品中文字幕在线| 国产精品视频播放| 精品久久久久久久久久久久| 一区三区二区视频| 欧美第一淫aaasss性|