多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > htmlcss > 正則表達式實現匹配html問題

正則表達式實現匹配html問題

來源:程序員人生   發布時間:2014-05-09 04:03:39 閱讀次數:3115次

  網(LieHuo.Net)教程 我想得到一個div標簽,這個標簽有其特定的id,怎么匹配一個html中的非此div標簽,然后刪除,即得到這個div標簽。這種方式怎么實現?

  答:

  結合平衡組可以實現:

  平衡組/遞歸匹配
  這里介紹的平衡組語法是由.Net Framework支持的;其它語言/庫不一定支持這種功能,或者支持此功能但需要使用不同的語法。

  有時我們需要匹配像( 100 * ( 50 + 15 ) )這樣的可嵌套的層次性結構,這時簡單地使用(.+)則只會匹配到最左邊的左括號和最右邊的右括號之間的內容(這里我們討論的是貪婪模式,懶惰模式也有下面的問題)。假如原來的字符串里的左括號和右括號出現的次數不相等,比如( 5 / ( 3 + 2 ) ) ),那我們的匹配結果里兩者的個數也不會相等。有沒有辦法在這樣的字符串里匹配到最長的,配對的括號之間的內容呢?

  為了避免(和(把你的大腦徹底搞糊涂,我們還是用尖括號代替圓括號吧。現在我們的問題變成了如何把xx <aa <bbb> <bbb> aa> yy這樣的字符串里,最長的配對的尖括號內的內容捕獲出來?

  這里需要用到以下的語法構造:

  (?'group') 把捕獲的內容命名為group,并壓入堆棧(Stack)
  (?'-group') 從堆棧上彈出最后壓入堆棧的名為group的捕獲內容,如果堆棧本來為空,則本分組的匹配失敗
  (?(group)yes|no) 如果堆棧上存在以名為group的捕獲內容的話,繼續匹配yes部分的表達式,否則繼續匹配no部分
  (?!) 零寬負向先行斷言,由于沒有后綴表達式,試圖匹配總是失敗
  如果你不是一個程序員(或者你自稱程序員但是不知道堆棧是什么東西),你就這樣理解上面的三種語法吧:第一個就是在黑板上寫一個"group",第二個就是從黑板上擦掉一個"group",第三個就是看黑板上寫的還有沒有"group",如果有就繼續匹配yes部分,否則就匹配no部分。

  我們需要做的是每碰到了左括號,就在壓入一個"Open",每碰到一個右括號,就彈出一個,到了最后就看看堆棧是否為空--如果不為空那就證明左括號比右括號多,那匹配就應該失敗。正則表達式引擎會進行回溯(放棄最前面或最后面的一些字符),盡量使整個表達式得到匹配。

  < #最外層的左括號 [^<>]* #最外層的左括號后面的不是括號的內容 ( ( (?'Open'<) #碰到了左括號,在黑板上寫一個"Open" [^<>]* #匹配左括號后面的不是括號的內容 )+ ( (?'-Open'>) #碰到了右括號,擦掉一個"Open" [^<>]* #匹配右括號后面不是括號的內容 )+ )* (?(Open)(?!)) #在遇到最外層的右括號前面,判斷黑板上還有沒有沒擦掉的"Open";如果還有,則匹配失敗> #最外層的右括號平衡組的一個最常見的應用就是匹配HTML,下面這個例子可以匹配嵌套的<div>標簽:<div[^>]*>[^<>]*(((?'Open'<div[^>]*>)[^<>]*)+((?'-Open'</div>)[^<>]*)+)*(?(Open)(?!))</div>.

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久91精品久久91综合 | 性欧美videos另类hd高清 | 亚洲a影院| 国产女主播一区二区在线观看 | 无遮无挡非常色的视频免费 | jizz日本老师jizz在线播放 | 国产成人综合日韩精品无 | 国产免费一区二区在线看 | 一级毛片在线免费观看 | 亚洲五月婷婷 | 久久无码av三级 | 国产精品视频第一区二区三区 | 亚洲福利视频在线 | 国产三级观看久久 | 亚洲欧美在线视频免费 | 欧美成人h版在线观看 | 亚洲精品高清国产一久久 | 亚洲欧美在线视频观看 | 精品免费 | 国产精品久久久久久久久免费观看 | 偷窥自拍校园春色 | 伊人久久大香线焦综合四虎 | jizz亚洲视频| 亚洲欧美日韩国产综合 | 最近中文字幕免费大全8高清 | 国产不卡一区二区视频免费 | 国产欧美成人免费观看 | 久久免费视频在线观看30 | 国内精品不卡一区二区三区 | 黄网站在线播放视频免费观看 | 91精品免费久久久久久久久 | 最新免费黄色网址 | 日韩大片免费在线观看 | 国产成人麻豆精品 | 亚洲视频在线一区二区 | jizzjizzjizz18中国 | 乌克兰性欧美精品高清bd | 精品一区二区乱码久久乱码 | 成人一区视频 | 就操成人网 | 精品1州区2区3区4区产品乱码 |