Я извлекаю URL из набора необработанных данных, и я собираюсь сделать это с помощью регулярных выражений Python.
Я пытался
(http.+)
Но он получил всю часть, начиная с http.
Ввод
href = "http://twitter.com/download/iphone" rel =" nofollow "> Twitter для iPhone https://vine.co/v/i6iIrBwnTFI
href = "http://twitter.com/download/iphone" rel =" nofollow "> Twitter для iPhone
https://vine.co/v/i6iIrBwnTFI
Ожидаемый вывод
http://twitter.com/download/iphone https://vine.co/v/i6iIrBwnTFI
http://twitter.com/download/iphone
Во-первых, вы должны найти что-действительные символы в URL-адресе
Затем регулярное выражение может быть:
(http://|https://)([a-zA-Z0-9\-\._~:/\?\#\[\]@!$&'\(\)\*\+,;=]+)
В моем интерпретаторе Python это выглядит так:
>>> import re >>> regexp = '''(http://|https://)([a-zA-Z0-9\-\._~:/\?\#\[\]@!$&'\(\)\*\+,;=]+)''' >>> url = '''href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone https://vine.co/v/i6iIrBwnTFI''' >>> r = re.findall(regexp, url) >>> r [('http://', 'twitter.com/download/iphone'), ('https://', 'vine.co/v/i6iIrBwnTFI')] >>> [x[0]+x[1] for x in r] ['http://twitter.com/download/iphone', 'https://vine.co/v/i6iIrBwnTFI']
Попробуйте это: http[^\"^\s]*
http[^\"^\s]*
Предполагается, что все ваши ссылки будут начинаться с http, и оно сломает выражение, если встретится с пробелом или "
"
Вот как выможет использовать его:
import re regexp = '''http[^\"^\s]*''' urls = '''href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone https://vine.co/v/i6iIrBwnTFI''' output = re.findall(regexp, urls) output
['http://twitter.com/download/iphone',' https://vine.co/v/i6iIrBwnTFI']