2016-07-28 54 views
-5

我有正則表達式查找HTTP://鏈接了提供谷歌搜索結果中的鏈接

/url?q=http://dl.mytehranmusic.com/1392/Poya/New/1392/7/8/1/&sa=U&ved=0ahUKEwjIhcufvJXOAhWKrY8KHWjQBgQQFggTMAA&usg=AFQjCNF4phMtVM1Gmm1_kTpNOM6CXO0wIw 

/url?q=http://mp3lees.org/index.php%3Fq%3DSia%2B-%2BElastic%2BHeart%2B(Feat.%2BThe%2BWeeknd%2B%2B%2BDiplo)&sa=U&ved=0ahUKEwjIhcufvJXOAhWKrY8KHWjQBgQQFggZMAE&usg=AFQjCNED4J0NRY5dmpC_cYMDJP9YM_Oxww 

我試圖找到http://鏈接了提供谷歌搜索結果鏈接的。

我試過href = re.findall ('/url?q=(+/S)&', mixed)其中mixed是存儲未格式化鏈接的變量名。

+2

發佈您的嘗試 –

+1

您嘗試過什麼? – nicael

+0

我試過了! mixed是變量名,其中存儲了未格式化的鏈接 這些星號不是鏈接的一部分! –

回答

0

你並不需要一個正則表達式來解析查詢字符串。使用urlparse

import urlparse 
s = '/url?q=http://dl.mytehranmusic.com/1392/Poya/New/1392/7/8/1/&sa=U&ved=0ahUKEwjIhcufvJXOAhWKrY8KHWjQBgQQFggTMAA&usg=AFQjCNF4phMtVM1Gmm1_kTpNOM6CXO0wIw' 
res = urlparse.parse_qs(urlparse.urlparse(s).query) 
if (res['q']): 
    print(res['q'][0]) 

Python demo

如果你絕對要對你沒有解釋原因的正則表達式的解決方案,我建議

r'/url\?(?:\S*?&)?q=([^&]+)' 

regex demo

(?:\S*?&)部分允許在任何地方匹配q查詢字符串內,並且將([^&]+)其它1個或多個字符匹配比&並捕獲到一組具有re.findall返回。

+1

是的,它工作完美!非常感謝! –