正则表达式从提供的谷歌搜索结果链接中查找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是存储未格式化链接的变量名。

您并不需要正则表达式来解析查询字符串。使用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演示

如果你因为没有解释的原因而绝对想要一个正则表达式解决方案,我建议

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

请参阅regex演示。

(?:S*?&)部分允许在查询字符串内的任何位置匹配q,而([^&]+)将匹配除&之外的1个或多个字符,并捕获到与re.findall一起返回的组中。

最新更新