Извлечение 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>

1 ответ

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

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

<a href="http://www.example.com/stuff">
http://www.example.com/stuff</br>
Другие вопросы по тегам