2015-06-11 80 views
-1

我剛接觸正則表達式。 我想提取所有的HTML標記之間的字符串

包含一個子 例如,對於HTML如下:html之間的正則表達式字符串<br>

<span class='mouseOverHeader'>Test TEst</span> 
<div class='mouseOverData'> 
xxx cccc ccccc<br>qqq wwww wwww<br>qqq qqq MYSUBSTRING<br><br> 
<a id="email" style="cursor:pointer" onclick=">mmmmmm</a> 
</div> 

我想提取字符串「QQQ QQQ MYSUBSTRING」 因爲它包含子我尋找「MYSUBSTRING」

非常感謝幫助

+0

不要針對html或xml測試您的正則表達式。 –

+0

@AvinashRaj你能解釋爲什麼嗎? – curvenut

+0

嘗試'[^ <>] * MYSUBSTRING [^ <>] *' –

回答

0

通常的方式來解析HTML是在構建樹(類似的東西BeautifulSoup Python,HTML::Tree in Perl)

原因是由於HTML標籤的嵌套特性以及嵌入其他語言,正則表達式經常會失敗和/或產生錯誤的輸出。我相信,這些模塊都在做它的方式是通過壓入和彈出標籤構建樹(讀括號<>)入棧和彈出出來時,他們被關閉(讀</>

不過,若你要堅持正則表達式,可以嘗試用這樣的:

while($code =~ m/<br>(.+?)<br>/g) 
{ 
print "$1\n"; 
} 

此正則表達式將只匹配第一組,但while循環,可以使匹配,直到遇到不具有圖案的子字符串。 我強烈建議您練習一些在線可視化正則表達式匹配器,在您鍵入時突出顯示組(嘗試RegExr)。

相關問題