如何使用正则表达式来分隔GET
URI 中的参数并提取某个参数?具体来说,我试图获取v=
YouTube 观看 URI 的一部分。我想出了youtube.com\/watch\?(\w+=[\w-]+&?)*(v=[\w-]+)&?*(\w+=[\w-]+&?)*
,但这看起来非常重复。有没有更好(更短?)的方法来做到这一点?
问问题
254 次
2 回答
0
一个简化的正则表达式:
^(?:http://www.)?youtube.[^/]+?/watch?(. ?)(v=([^&]+))(. )$
于 2012-10-10T07:33:59.523 回答
0
我知道有很多类似的问题,但没有一个完全符合我的要求。我正在寻找能够仅提取视频 ID 的东西——无论它是参数列表中的第一个、最后一个还是隐藏在其他参数列表中。我所见过的还没有像那样工作。
作为参考,我正在使用这个 Web 应用程序进行测试,以及这组测试 URI:
http://www.youtube.com/watch?v=XXXXXXXXXXX
http://www.youtube.com/watch?v=XXXXXXXXXXX&feature=results_video&playnext=1&list=XXXXXXXXXXXXXXXXXX
http://www.youtube.com/watch?feature=player_embedded&v=XXXXXXXXXXX#!
http://www.youtube.com/watch?annotation_id=annotation_xxxxxx&feature=iv&src_vid=XXXXXXXXXXX&v=XXXXXXXXXX
各位 Stack Exchangers,我提出以下正则表达式来解决这个问题:youtube.com\/watch\?(\S*)v=([\w-]+)
于 2012-10-10T08:18:57.453 回答