我需要從Google Video URL獲取視頻ID。有兩種不同類型的網址,我需要能夠匹配:正則表達式匹配Google Video URL中兩個視頻ID之一
http://video.google.com/videoplay?docid=-3498228245415745977#
,我需要能夠匹配-3498228245415745977
(注意劃線; - )和
video.google.com/videoplay?docid=-3498228245415745977#docid=
我需要匹配2728972720932273543
。有什麼好的正則表達式可以匹配嗎?
這是我到目前爲止:@"docid=(-?\d{19}+)"
由於視頻ID似乎是19個字符,除非它的前綴是短劃線。
如果改變了什麼,我正在使用C#(其中我有很少經驗)。
P.s.我也很感謝您查看我的正則表達式YouTube(@"[\?&]v=([^&#])";
),RedTube(@"/(\d{1,6})"
)和Vimeo(@"/(\d*)"
)。
我不希望用戶輸入完整的URL,因此與^http://\\.?sitename+\\.\\w{2,3}
不匹配。
我對負向預覽不熟悉,但該表達式是否與「video.google.com/videoplay?docid=-3498228245415745977#docid=2728972720932273543」的「2728972720932273543」(後者)部分匹配? – 2010-05-13 18:57:52
是的。它與-3498228245415745977部分不匹配,因爲它後面緊跟着一個「#docid =」,所以它會跳過該部分,然後找到也與您的RegEx匹配的後一部分。 因此,負面超前的「唯一」事情就是確保比賽沒有遵循給定的表達。 – Falle1234 2010-05-13 19:13:12
非常感謝,這個解決方案太棒了! – 2010-05-13 19:46:52