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