匹配所有有效的 RTSP URL,带认证的 URL 规范是什么?

我当前的正则表达式如下所示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 吗?我也需要处理它。

我将在稍后阶段添加提取用户、密码和主机名的捕获组。


蝴蝶刀刀
浏览 118回答 1
1回答

喵喵时光机

不要在这里乱用正则表达式,它已经为你完成了:from urllib.parse import urlparseobj = 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python