我有
/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
一起返回的组中。