我在VB中有以下正则表达式
(http[s]?|rtsp|qvmc|rtmp)://(([^/:\.[:space:]]+(\.[^/:\.[:space:]]+)*)|([0-9](\.[0-9]{3})))(:[0-9]+)?((/[^?#[:space:]]+)(\?[^#[:space:]]+)?(\#.+)?)?
和我有的网址:
rtsp://root:admin@192.0.0.0/axis-media/media.amp?videocodec=h264&audio=1>rtsp_transport=udp_multicast>recordingfilename=c:\folder\recfile.mp4
无法通过上述正则表达式传递匹配,任何人都可以建议正则表达式中的错误。
答案 0 :(得分:1)
您的正则表达式在@之前没有与用户名和密码匹配的内容 虽然您的URL有用户名和密码,但它不匹配。
不要在.NET中使用像[:space:]
这样的POSIX character class
此模式还将捕获用户名和密码:
(https?|rtsp|qvmc|rtmp):\/\/(?:([^\s@\/]+?)[@])?([^\s\/:]+)(?:[:]([0-9]+))?(?:(\/[^\s?#]+)([?][^\s#]+)?)?([#]\S*)?