用于解析YouTube视频ID的正则表达式

5

示例网址

http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo
http://www.youtube.com/watch?v=cKZDdG9FTKY&feature=channel
http://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub
http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I

有没有任何正则表达式可以从这4个用例中提取正确的YID?第一个用例尤其奇怪。

谢谢。


1
请查看此处:http://stackoverflow.com/questions/tagged/youtube+regex - codaddict
据我所知,没有其他人处理过我的第一个测试用例。 - putorti
把它们当作例子并加以调整,这并不是很难。 - ceejayoz
我已经更新了我的正则表达式答案,以处理这些(对我来说是新的)YouTube URL语法。更新位于“php regex - find all youtube video ids in string”问题上。 - ridgerunner
2个回答

14

这需要修改为:(?<=v=)[a-zA-Z0-9-_]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+,以允许使用下划线。 - Kevin B
必须为php添加反斜杠 (?<=v=)[a-zA-Z0-9-_]+(?=&)|(?<=[0-9]\/)[^&\n]+|(?<=v=)[^&\n]+ - ThomasReggi

6

就我所知,这在http://rubular.com/上起作用了。

(v=|\/)([\w-]+)(&.+)?$

获取这些的第二个捕获组:

http://www.youtube.com/user/SilkRoadTheatre#p/a/u/2/6dwqZw0j_jY
http://youtu.be/6dwqZw0j_jY
http://www.youtube.com/watch?v=6dwqZw0j_jY&feature=youtu.be
http://youtu.be/afa-5HQHiAs
http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo
http://www.youtube.com/watch?v=cKZDdG9FTKY&feature=channel
http://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub
http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I

抱歉,我无法翻译没有具体内容的标签。请提供需要翻译的文本。

2
我见过的最好的正则表达式。你只需要检查匹配组2,但它非常整洁。顺便说一下:这将在匹配组1中返回id [v=|\/]([\w-]+)(&.+)?$ - Phrozen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接