2015-06-24 87 views
1

出於某種原因,以下正則表達式不像我所期望的那樣運行。用正則表達式查找空格的鏈接

我想從HTML廣告中提取所有鏈接,儘管我似乎無法找到正確處理空格鏈接的方法。

我知道鏈接應該被編碼,但如果我找不到它們,就沒有辦法對鏈接進行編碼。

我對這個html進行測試 - 注意唯一的區別是{你的參考}中的空間。

Find out <a href="http://website.co.uk?element=1&amp;reference={your reference}"><span style="color:#000000;">what something is here</span></a><span style="color:#000000;">.</span><br /> 

Find out <a href="http://website.co.uk?element=1&amp;reference={yourreference}"><span style="color:#000000;">what something is here</span></a><span style="color:#000000;">.</span><br /> 

用下面的正則表達式我只能得到鏈接,沒有任何空間的預期:

href="http(s{0,1}):\/\/(\S+)" 

發現:

href="http://website.co.uk?element=1&amp;reference={yourreference}" 

但是,如果我改變\ S到一個。我希望檢查返回鏈接到收盤」,但它幾乎持續到字符串的結尾:

href="http(s{0,1}):\/\/(.+)" 

發現:

href="http://website.co.uk?element=1&amp;reference={your reference}"><span style="color:#000000;">what something is here</span></a><span style="color:#000000;" 

href="http://website.co.uk?element=1&amp;reference={yourreference}"><span style="color:#000000;">what something is here</span></a><span style="color:#000000;" 

我也有一些不同的檢查撿起不同的鏈接,最後看起來像這樣:

(href="|href=\')%%siteurl%%(\S*)("|\') 
|href="www\.(\S+)" 
|href="http(s{0,1}):\/\/(\S+)" 
|href=\'www\.(\S+)\' 
|href=\'http(s{0,1}):\/\/(\S+)\' 

我不是在尋找這個設置的幫助,只是貼出原始正則表達式,我會相應地調整其餘部分。

回答

1
href="http(s{0,1}):\/\/(.+?)" 

          ^^ 

讓你的quantifier不貪心。

+1

完美,感謝您的快速響應! –