<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      KK的技術(shù)人生

      技術(shù)改變世界
      Java/Js如何使用正則表達式匹配嵌套Html標簽

      以前寫過一篇文章講解如何使用正則表達式完美解決Html嵌套標簽的匹配問題(使用正則表達式匹配嵌套Html標簽),但是里頭用到了平衡組這樣的高級特性,貌似只有DotNet還有Perl正則引擎支持,因此通用性不高。有朋友留言說Java直接使用的話會報錯。我后來查了一下,發(fā)現(xiàn)Java正則引擎支持的特性相對比較少。在1.6版本中不能使用命名組(貌似1.7的時候開始支持了),否則會報以下錯誤,更別說平衡組了。因此感覺要實現(xiàn)無限級的嵌套匹配不大現(xiàn)實。

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

      在網(wǎng)上搜了好久也沒找到完美的解決方案。不過,我們可以實現(xiàn)有限級Html嵌套標簽匹配。思路相對于無限級來說就簡單了好多,不需要那么多高級的特性。

      示例:

      <div id='container'>
      <div style='background-color:gray;' id='footer'>
      <a id='gotop' href='#' onclick='MGJS.goTop();return false;'>Top</a>
      <a id='powered' >WordPress</a>
      <div id='copyright'>
      Copyright &copy; 2009 簡單生活 —— Kevin Yang的博客
      </div>
      <div id='themeinfo'>
      Theme by <a >mg12</a>. Valid <a >XHTML 1.1</a>
      and <a >CSS 3</a>.
      </div>
      </div>
      </div>

      在上面這個示例中,我們打算匹配id為footer的這個嵌套div,而且假設(shè)我們預先知道footer這個div里面最多只會嵌套一級div。更多級的情況我們一會兒再講。

      footer的開始和結(jié)束標簽匹配很簡單:

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

      夾在開始和結(jié)束標簽之間的內(nèi)容無非有兩種情況:

      • 內(nèi)容A: div標簽,并且此div內(nèi)無嵌套div
      • 內(nèi)容B: 任意其他內(nèi)容

      然后就是這兩種內(nèi)容的不斷重復而已。正則表示如下:

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

      注意最后面的問號必須要加上,否則由于正則的貪婪匹配特性,footer的閉合標簽會匹配失誤。

      OK了,匹配最多嵌套一級div的正則表達式如下:

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

      那么如果footer標簽里頭最多會嵌套兩級div的話怎么辦呢?

      其實也不難,我們只需要把上面的“內(nèi)容A”部分中的點號稍作替換即可。修改如下:

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

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

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

      所以實際上,只要你的html結(jié)構(gòu)不是特別復雜的話,也就是說嵌套不會很深的話,那么你完全可以使用這種方式來匹配嵌套html標簽。

      這個正則在Java和Javascript中都可以使用,因為它沒有用到任何高級特性。

      ——Kevin Yang

      posted on 2010-07-30 01:41  KK2038  閱讀(5248)  評論(3)    收藏  舉報

      主站蜘蛛池模板: 无码免费大香伊蕉在人线国产| 国产suv精品一区二区四 | 亚洲午夜精品久久久久久抢| 国产免费高清69式视频在线观看| 亚洲精品综合一区二区三区| 欧美性xxxxx极品| 国产SM重味一区二区三区 | 久久综合伊人77777| 国产偷人爽久久久久久老妇app| 色噜噜在线视频免费观看| 国产精品大片中文字幕| 国产综合久久久久鬼色| 日韩福利片午夜免费观着| 一卡二卡三卡四卡视频区| 樱桃视频影院在线播放| 在线免费观看毛片av| 熟女精品国产一区二区三区| 无码国产偷倩在线播放老年人 | 国产精品一区二区日韩精品| 四虎永久精品在线视频| 国产欧美亚洲精品a| 在线无码免费的毛片视频| 日韩精品视频一二三四区| 欧美人禽杂交狂配| 日韩乱码卡一卡2卡三卡四| 成人无码潮喷在线观看| 国产乱国产乱老熟300部视频| 蜜桃无码一区二区三区| 国产精品麻豆中文字幕| 璧山县| 国产成人精品永久免费视频| 成人亚欧欧美激情在线观看 | 久久久精品人妻一区二区三区| 国产综合色一区二区三区| 激情在线网| 好男人日本社区www| 久久亚洲精品11p| 韩日午夜在线资源一区二区| 天堂v亚洲国产v第一次| 国产高跟黑色丝袜在线| 国产中文字幕日韩精品|