Извлечение URL-ссылки с использованием регулярного выражения для повторного сопоставления строк — Python

Я пытался извлечь URL-адреса из текстового файла, используя re api. любая ссылка, начинающаяся с http://, https:// и www.

файл содержит тексты, а также исходный код html, часть html проста, потому что я могу извлечь их с помощью BeautifulSoup, но обычный текст кажется более сложным. Я нашел это в Интернете, которое кажется лучшей реализацией извлечения URL-адресов, однако оно не работает с некоторыми тегами, особенно оно не может обрабатывать теги и включает их в URL-адрес. любая помощь приветствуется, потому что я сам не знаком с сопоставлением строк

вот подпись

sp1=re.findall("http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+", str(STRING))
sp2=re.findall('www.(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', str(STRING))

Примеры:

http://www.website.com/science/</span></a><o:p></o:p></span></div><div
www.website.com/library/</span></a></span></i><span
http://awebsite.com/Groups</a><div>

person Eternity    schedule 06.05.2012    source источник


Ответы (1)


re.findall(r'https?://[^\s<>"]+|www\.[^\s<>"]+', str(STRING))

Часть [^\s<>"]+ соответствует любому символу без пробелов, кавычек и угловых скобок, чтобы избежать совпадения таких строк, как:

<a href="http://www.example.com/stuff">
http://www.example.com/stuff</br>
person Joel Cornett    schedule 06.05.2012
comment
круто, работает как чемпион :) ..Спасибо, приятель - person Eternity; 07.05.2012