Как извлечь только URL из следующих строк с помощью регулярных выражений? - PullRequest
0 голосов
/ 29 декабря 2018

Я извлекаю URL из набора необработанных данных, и я собираюсь сделать это с помощью регулярных выражений Python.

Я пытался

(http.+)

Но он получил всю часть, начиная с http.

Ввод

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

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Во-первых, вы должны найти что-действительные символы в 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']
0 голосов
/ 29 декабря 2018

Попробуйте это: 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']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...