2016-07-28 12 views
-5

У меня естьРегулярного выражения для поиска HTTP: // ссылки из предоставленного Google результатов поиска ссылки

/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:// ссылки из предоставленного Google результатов поиска ссылки.

Я пробовал href = re.findall ('/url?q=(+/S)&', mixed) где mixed - это имя переменной, в котором сохраняется неформатированная ссылка.

+2

Опубликовать ваши попытки –

+1

Что вы пробовали? – nicael

+0

Я пробовал это! href = re.findall ('/ url? Q = (+/S) &', mixed) 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

Да, это сработало отлично! большое спасибо! –