我在模板中有变量key.links.self
(来自 JSON 输出(,它是一个 URL:
https://ahostnamea.net:666/api/v1/
现在我想做的是仅从这个变量ahostnamea
在模板中呈现。
我知道可以剪切字母,但是当第一个字母总是具有相同的计数(https://
= 8个字母(时,其余的就不那么简单了,而且会有所不同。
有没有办法将字符串从/
分割/切割到.
?还是其他方式?
您可以使用带有捕获组和否定字符类的模式[^.]+
匹配除点之外的任何字符。
https?://([^.]+)
正则表达式演示 |蟒蛇演示
例如
import re
regex = r"https?://([^.]+)"
test_str = "https://ahostnamea.net:666/api/v1/"
matches = re.search(regex, test_str)
if matches:
print(matches.group(1))
结果
ahostnamea
编辑
正如建议的那样,您也可以使用 urllib.parse 来获取主机名。
from urllib.parse import urlparse
o = urlparse("https://ahostnamea.net:666/api/v1/")
蟒蛇演示
例如,您可以通过在点上拆分来获得第一部分:
s = o.hostname.split('.', 1)[0]
print(s)
结果
ahostnamea
一个正确的解决方案是{{ request.META.HTTP_HOST }}