正确的正则表达式,我无法达到

时间:2015-06-12 12:52:34

标签: regex

^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 +并不工作我认为......

1 个答案:

答案 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)?))$