从python中的字符串中提取URL

2024-10-01 13:24:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从字符串中提取一个完整的URL。在

我的代码是:

import re
data = "ahahahttp://www.google.com/a.jpg>hhdhd"
print re.match(r'(ftp|http)://.*\.(jpg|png)$', data)

输出:

^{pr2}$

预期产量

http://www.google.com/a.jpg

我在StackOverflow上找到了这么多问题,但没有一个对我有用。 我看过很多帖子,这不是重复的。请帮帮我!谢谢。在


Tags: 字符串代码importrecomhttpurldata
3条回答

你很亲密!在

试试这个:

r'(ftp|http)://.*\.(jpg|png)'

您可以将此here可视化。在

我也会让这个不贪婪的人变成这样:

^{pr2}$

您可以将这种贪婪与非贪婪行为here和{a3}可视化。在

默认情况下,.*将匹配尽可能多的文本,但您希望匹配尽可能少的文本。在

您的$将匹配项锚定在行尾,但在您的示例中,URL的结尾不是行尾。在

另一个问题是您使用的是re.match(),而不是{}。使用re.match()从字符串的开头开始匹配,而re.search()搜索字符串中的任何位置。有关详细信息,请参见here。在

使用Find(http://,ftp://)查找url的开头。使用Find(jpg,png)查找url的结尾。现在获取子字符串

data = "ahahahttp://www.google.com/a.jpg>hhdhd"
start = data.find('http://')
kk = data[start:]
end = kk.find('.jpg')
print kk[0:end+4]

你应该使用搜索而不是匹配。在

import re
data = "ahahahttp://www.google.com/a.jpg>hhdhd"
url=re.search('(ftp|http)://.*\.(jpg|png)', data)
if url:
   print url.group(0)

相关问题 更多 >