2016-12-01 26 views
0

我想刮從網站的iframe,但似乎無法湊整IFRAME(不僅僅是屬性)(爲崗位的目的,我會做一個基本的iframe)獲取整個iframe與正則表達式

<iframe src="http://google.com"></iframe> 

每個iframe的內容是容易發生變化,因此需要正則表達式的iframe標記一些我如何,有以下買試過無法得到它的工作:

<iframe[^>]*>(.*?)</iframe[^>]*>" 

回答

0
(<iframe[^>]*>(.*?)</iframe[^>]*>) 

你的整個iframe是現在在捕獲組1中。一些實現將允許您使用捕獲組0來獲得整個匹配。其他實現方法只是爲了獲得整個匹配的文本。

1

這可能是因爲您的iframe跨越多行。在這種情況下,您應該知道.與換行符不匹配,因此您可以用(?:.|\n)[^<]替換它,或者使用點全部/單行標誌,以便點匹配所有字符。您也可以使用這個正則表達式代替:<iframe[^>]*?(?:\/>|>[^<]*?<\/iframe>)也匹配<iframe />

+0

您的正則表達式中的一個小錯誤:未命名組中的第二個替代方法需要以'>'開始,因此您可以抓取開始標記的最後一個字符。此外,所有RegEx解析HTML的東西很容易在嵌套標籤的情況下爆炸(例如輸入「