^http(?:s)?:\/\/(?:www\.|events\.)?(?:v\.)?(?:(?:youtube)|(?:youku))\.\w{2,}\/(?:(?:\d{4}\/[^\/]+\/api\/video-files\.php\?\w+=\w+|watch\?(?=[^?]*v=?\-?\w+)(?:[^\s?,^\&?]+)?)|(?:v_show\/id_(?:\w{10,})(?:\.html)?))$
我有一个符合以下字符串的正则表达式:
http://v.youku.com/v_show/id_XODQxOTg0ODg0.html
http://www.youtube.com/watch?v=n66NLBbQ53w
http://events.youku.com/2014/misc/api/video-files.php?vid=XMjg3MzQ5NTg4
但我需要管理最后一个接受'vid='
例如,这也需要访问:
http://events.youku.com/2015/misc/api/video-files.php?vid=XMTI2MDEyNzQ0OA==
我试图添加其他|这部分如\w+=\w+==
,但它没有工作......
任何人都可以帮助我接受' ='之后的字符串。标志 ? \ w +并不工作我认为......
答案 0 :(得分:1)
https://regex101.com/r/mR5cU3/1
这里有:
我更改你的正则表达式添加(?:==)?
^ HTTP //(:S')?(?:。WWW |事件)?(:V')?(:(:?YouTube)的|(?:优酷))。\ W { 2,} /(?:(?:\ d {4} / [^ /] + / API /视频files.php \ \ W + = \ W +的(?:?==)强>? ????|手表\(????= [?^] * v = - \ W +)(?:[??^ \ S,^ \&安培;] +))|(:v_show / ID _(:\瓦特{10,})(?:?HTML)))$
解决方案:
^http(?:s)?:\/\/(?:www\.|events\.)?(?:v\.)?(?:(?:youtube)|(?:youku))\.\w{2,}\/(?:(?:\d{4}\/[^\/]+\/api\/video-files\.php\?\w+=\w+(?:==)?|watch\?(?=[^?]*v=?\-?\w+)(?:[^\s?,^\&?]+)?)|(?:v_show\/id_(?:\w{10,})(?:\.html)?))$