2017-08-01 107 views
0

我在VB需要正則表達式的URL

(http[s]?|rtsp|qvmc|rtmp)://(([^/:\.[:space:]]+(\.[^/:\.[:space:]]+)*)|([0-9](\.[0-9]{3})))(:[0-9]+)?((/[^?#[:space:]]+)(\?[^#[:space:]]+)?(\#.+)?)? 

和URL後面的正則表達式我有:

rtsp://root:[email protected]/axis-media/media.amp?videocodec=h264&audio=1>rtsp_transport=udp_multicast>recordingfilename=c:\folder\recfile.mp4 

無法通過匹配上述正則表達式,任何人都可以提出什麼是正則表達式中的錯誤。

+2

.NET正則表達式引擎不支持POSIX字符類。嘗試用'\ s'替換所有'[:space:]' –

回答

1

您的正則表達式在@之前沒有與用戶名和密碼匹配的內容。
雖然你的網址有一個用戶名和密碼,所以它不會匹配。

不要使用POSIX character class[:space:]在.NET

這種模式也將捕獲用戶名和密碼:

(https?|rtsp|qvmc|rtmp):\/\/(?:([^\[email protected]\/]+?)[@])?([^\s\/:]+)(?:[:]([0-9]+))?(?:(\/[^\s?#]+)([?][^\s#]+)?)?([#]\S*)? 
+0

這對我來說不起作用。我面對的實際問題是匹配**「>」**字符,這部分給出了錯誤> rtsp_transport = udp_multicast。我應該做什麼修改匹配> URL末尾的字符。 –

+0

@PradeepKumar難道你想在'?'之後使用那個捕獲在XML?在這種情況下,可能需要將'>'替換爲'>'[以保持XML一致](https://stackoverflow.com/questions/1091945/what-c​​haracters-do-i-need-to -escape功能於XML的文檔)。 – LukStorms

+0

另外考慮有時你不需要一個正則表達式來從字符串中獲取零件。例如,您可以在「>」上拆分一個字符串,如「?xxx> yyy> zzz」以獲取數組。 – LukStorms