我当前的正则表达式如下所示r"rtsp://\w+:\w+@[\w\.-]+":我的编程语言是 Python。然而,有些 URL 看起来像这样,但无法匹配:rtsp://admin:fjs!hfk@my-cam.fritz.box/xxx/yyyy/1?transportmode=unicast我可以将正则表达式更改为r"rtsp://\w+:[\w!]+@[\w\.-]+"匹配!. 我不关心 URL 的结尾 ( /xxx/yyyy/1?transportmode=unicast)我的问题是是否有规范<user>,<password>和<hostname>可以是什么类型的字符?因为我可能无法匹配所有内容。我一直在向 中添加字符,\w但我不想继续进行快速修复,例如我是如何!向密码和-主机.名中添加的。有人可以@在密码中输入 a 吗?我也需要处理它。我将在稍后阶段添加提取用户、密码和主机名的捕获组。
1 回答

喵喵时光机
TA贡献1846条经验 获得超7个赞
不要在这里乱用正则表达式,它已经为你完成了:
from urllib.parse import urlparse
obj = urlparse('rtsp://admin:fjs!hfk@my-cam.fritz.box/xxx/yyyy/1?transportmode=unicast')
print(obj)
这产生
ParseResult(scheme='rtsp', netloc='admin:fjs!hfk@my-cam.fritz.box', path='/xxx/yyyy/1', params='', query='transportmode=unicast', fragment='')
现在,您可以只使用属性:
print(obj.netloc)
# admin:fjs!hfk@my-cam.fritz.box
添加回答
举报
0/150
提交
取消