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

Posted

技术标签:

【中文标题】使用正则表达式重新字符串匹配提取 URL 链接 - Python【英文标题】:Extracting URL link using regular expression re - string matching - Python 【发布时间】:2012-05-15 13:04:06 【问题描述】:

我一直在尝试使用 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>

【问题讨论】:

【参考方案1】:
re.findall(r'https?://[^\s<>"]+|www\.[^\s<>"]+', str(STRING))

[^\s&lt;&gt;"]+ 部分匹配任何非空白、非引号、非尖括号字符以避免匹配字符串,例如:

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

【讨论】:

太棒了,像冠军一样工作:)..谢谢队友

以上是关于使用正则表达式重新字符串匹配提取 URL 链接 - Python的主要内容,如果未能解决你的问题,请参考以下文章

使用正则表达式从 URL 中提取***域和二级域

从给定字符串中提取 url 的 C# 正则表达式模式 - 不是完整的 html url,而是裸链接

LinkExtractor 构造器各参数说明

正则表达式匹配 URL 行尾或“/”字符

一个通用的php正则表达式匹配或检测或提取特定字符类

正则表达式实例