使用正则表达式重新字符串匹配提取URL链接-Python

使用正则表达式重新字符串匹配提取URL链接-Python,python,string,url,matching,extraction,Python,String,Url,Matching,Extraction,我一直在尝试使用re api从文本文件中提取URL。以http://、https://和www开头的任何链接 该文件包含文本以及html源代码,html部分很简单,因为我可以使用BeautifulSoup提取它们,但普通文本似乎更具挑战性。 我在网上找到了这个,它似乎是URL提取的最佳实现,但是它在某些标记上失败了,特别是它不能处理标记并将它们包含在URL中。 非常感谢您的帮助,因为我自己根本不熟悉字符串匹配 这是签名 sp1=re.findall("http[s]?://(?:[a-zA-Z]

我一直在尝试使用re api从文本文件中提取URL。以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>
http://www.website.com/science/
re.findall(r'https?://[^\s”]+| www\.[^\s”]+',str(字符串))
[^\s”]+
部分匹配任何非空白、非引号、非尖括号字符,以避免匹配以下字符串:

<a href="http://www.example.com/stuff">
http://www.example.com/stuff</br>

http://www.example.com/stuff
棒极了,像冠军一样工作:)…谢谢你,伙计
<a href="http://www.example.com/stuff">
http://www.example.com/stuff</br>