regex 使用Python查找文本中的超链接(twitter相关)

ru9i0ody  于 2023-01-03  发布在  Python
关注(0)|答案(5)|浏览(118)

如何解析文本并查找包含字符串的超链接的所有示例?超链接将不是<a href="http://test.com">test</a>的html格式,而只是http://test.com
其次,我想转换原始字符串,并将所有超链接示例替换为可点击的html超链接。
我在这个帖子里找到了一个例子:
Easiest way to convert a URL to a hyperlink in a C# string?
但无法在python中重现:(

gev0vcfq

gev0vcfq1#

下面是将URL转换为C#字符串中的超链接的最简单方法?的Python移植:

import re

myString = "This is my tweet check it out http://tinyurl.com/blah"

r = re.compile(r"(http://[^ ]+)")
print r.sub(r'<a href="\1">\1</a>', myString)

输出:

This is my tweet check it out <a href="http://tinyurl.com/blah">http://tinyurl.com/blah</a>
cnjp1d6j

cnjp1d6j2#

Here是2002年推出的一个更为复杂的正则表达式。
@yoniLavi将此缩小为:

re.compile(r'\b(?:https?|telnet|gopher|file|wais|ftp):[\w/#~:.?+=&%@!\-.:?\\-]+?(?=[.:?\-]*(?:[^\w/#~:.?+=&%@!\-.:?\-]|$))')
mwkjh3gx

mwkjh3gx3#

Django也有一个解决方案,它不只是使用regex.它是django.utils.html.urlize().我发现这是非常有帮助的,特别是如果你碰巧使用django.
还可以提取代码以在自己的项目中使用。

qv7cva1a

qv7cva1a4#

Jinja2( flask 使用这个)有一个过滤器urlize,它做同样的事情。
文件

gcmastyq

gcmastyq5#

我建议也看看urlextract
您可以运行以下命令来安装它:第一个月

from urlextract import URLExtract

extractor = URLExtract()
urls = extractor.find_urls("Text with URLs. Let's have URL janlipovsky.cz as an example.")
print(urls) # prints: ['janlipovsky.cz']

urlextract的主要优点是不用指定schema(http,ftp等)就可以找到URL,它还有很多配置选项可以根据你的需要调整提取器,所有的东西都可以在documentation中找到。

相关问题