3 回答
TA贡献2019条经验 获得超9个赞
尝试使用
import re
s = "https://myhost.mydomain.com/pnLVyL7HjrxMlxjBQkhcOMr2WUs=/400x400/https://myhost.mydomain.com/images/98f9a734-52e2-4616-adf7-bf0165bbf738.png"
m = re.search(r"https://.+(https.+)$", s)
if m:
print(m.group(1))
输出:
https://myhost.mydomain.com/images/98f9a734-52e2-4616-adf7-bf0165bbf738.png
TA贡献1906条经验 获得超10个赞
我建议采用这种方法:
https?(?!.*https?):\/\/.*\bmydomain\.(?:com|io).*
此正则表达式使用负向前查找来确保我们匹配的 URL 是输入字符串中的最后一个。示例脚本:
inp = "https://myhost.mydomain.com/pnLVyL7HjrxMlxjBQkhcOMr2WUs=/400x400/https://myhost.mydomain.com/images/98f9a734-52e2-4616-adf7-bf0165bbf738.png"
url = re.findall(r'https?(?!.*https?):\/\/.*\bmydomain\.(?:com|io).*', inp)[0]
print(url)
这打印:
https://myhost.mydomain.com/images/98f9a734-52e2-4616-adf7-bf0165bbf738.png
TA贡献1809条经验 获得超8个赞
由于有 2 个链接,您可以匹配第一个链接并捕获组 1 中的第二个链接。
https?://myhost\.mydomain\.(?:com|io)/\S*?(https?://myhost\.mydomain\.(?:com|io)/\S*\.(?:jpe?g|png))
https?://myhost\.mydomain\.(?:com|io)/
匹配第一个链接的开头\S*?
匹配 0+ 次非空白字符非贪婪(
捕获组 1https?://myhost\.mydomain\.(?:com|io)/
匹配第二个链接的开头\S*
匹配 0+ 次非空白字符\.(?:jpe?g|png)
匹配 .jpg 或 .jpeg 或 .png)
关闭组 1
例如
import re
regex = r"https?://myhost\.mydomain\.(?:com|io)/\S*?(https?://myhost\.mydomain\.(?:com|io)/\S*\.(?:jpe?g|png))"
test_str = ("https://myhost.mydomain.com/pnLVyL7HjrxMlxjBQkhcOMr2WUs=/400x400/https://myhost.mydomain.com/images/98f9a734-52e2-4616-adf7-bf0165bbf738.png")
matches = re.search(regex, test_str)
if matches:
print(matches.group(1))
输出
https://myhost.mydomain.com/images/98f9a734-52e2-4616-adf7-bf0165bbf738.png
添加回答
举报