日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

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

  網(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>.

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久精品国产一区二区电影 | 二区不卡 | 欧美日韩综合在线 | 欧美成人精品二区三区99精品 | 国产精品国产三级国产三级人妇 | 日日激情综合久久一区 | 久久1区 | 久久久久久免费毛片精品 | 亚洲国产精品成人 | 91久久夜色精品国产九色 | 国产精品综合 | 污网站免费看 | 久久99精品国产一区二区三区 | 欧美日韩亚洲自拍 | 国产精品日韩欧美一区二区 | 国产精品久久国产精品 | 黄色一几片| 国产精品videossex | 在线精品一区 | 亚洲污视频 | 欧美在线观看视频一区二区 | 国产精品麻豆视频 | 日韩亚洲一区二区 | 在线国产一区 | 成人在线免费观看 | 成人在线看片 | 亚洲2020天天堂在线观看 | 欧美日韩精品一区二区三区蜜桃 | 黄色成年人网站在线观看 | 亚洲免费在线观看视频 | 国产精品一区二区三区免费看 | 国产黄色精品 | 欧美在线观看视频一区二区 | 91福利视频合集 | 成人在线观看视频网站 | 不用播放器看av | 亚洲欧美视频在线观看 | 亚洲精品自拍视频 | 久久免费视频网站 | 久久久久一区二区三区 | 国产成人福利在线 |