2014-09-21 59 views
0

我想在一個大的HTML文本中獲取某個html節點,但是我的正則表達式中的某些內容很糟糕。停止在第一個字符匹配?

我要取的是這個樣子的所有URL:

<a href="ftp://mysite.com"> some stuff </a> 

我試圖做的事:

/<a href="ftp:(.+)">/ 

,但有時它會工作,但有時它會抓住一切直到下一次關閉>

有沒有辦法重寫這個正則表達式,所以它會停在第一個>

+1

'+'是由narure貪婪。你需要在'+'之後添加'?'分隔符來使其不貪婪。所以你的正則表達式是'' – 2014-09-21 10:06:31

回答

1

+貪婪運營商意味着它儘可能多的比賽,因爲它可能可以和仍然允許其餘的正則表達式匹配。爲此,我建議使用否定類,意思是任何字符,但以下情況除外:"「一個或多個」時間。

/<a href="ftp:([^"]+)">/ 

Live Demo

1

讓你的正則表達式ungreedy:

/<a href="ftp:(.+?)">/ 
//  here __^ 

或:

/<a href="ftp:([^>"]+)">/ 

但最好使用一個解析器。

相關問題