2017-02-07 36 views
-1

我正在嘗試從源代碼中提取URL。源代碼是類似於以下正則表達式:提取包含文本的URL

text text text<h4 class="a"><a href="http://site1.com/url/" onmousedown="return rwt(this,'','','','15',111','','0333','','',home)">...</a></h4> 

我達到迄今(?<=<h4\ class="a"><a\ href=")http://.*,但這仍然不是僅提取URL。我需要輸出僅爲http://site1.com/url/

在此先感謝!

+1

使用dom或xml解析器而不是正則表達式來解析html – baao

回答

1

就像評論一樣,使用dom或xml/html解析器而不是正則表達式。在瀏覽器中,你能做到這一點使用javascript:

var s = `text text text<h4 class="a"><a href="http://site1.com/url/" onmousedown="return rwt(this,'','','','15',111','','0333','','',home)">...</a></h4> 
 
`; 
 

 
var e = document.createElement('div'); 
 
e.innerHTML = s; 
 
Array.from(e.getElementsByTagName("a")).forEach(link => { 
 
    console.log(link.href); 
 
})

如果你不希望這樣做在瀏覽器中,也有HTML和XML解析器可用於其他環境

0

捕獲組是爲這樣的任務而設計的,儘管我同意使用正則表達式來解析HTML是一種糟糕的形式。如果你需要匹配的是你在這裏給出的前綴和URL(並且你保證有格式良好的HTML(並且在任何顯示的文本中正確地轉義了HTML)),那麼你可以使用的正則表達式是:

/<h4 class="a"><a href="([^"]+)"/ 

https://regex101.com/r/skfhTm/1

第一捕獲組將包含URL。