如何在Lua中从URL中提取YouTube视频ID

我需要从以下在 Lua 字符串变量中的 URL 中提取 YouTube 视频 id(例如 brSU-lAACiA)。

local string = "a:2:{s:8:\"td_video\";s:60:\"http:\/\/www.youtube.com\/watch?v=brSU-lAACiA&feature=autoshare\";s:13:\"td_last_video\";s:60:\"http:\/\/www.youtube.com\/watch?v=brSU-lAACiA&feature=autoshare\";}"

应该使用什么模式?

点赞
用户841531
用户841531

我想我搞定了。

local string = "a:2:{s:8:\"td_video\";s:60:\"http:\/\/www.youtube.com\/watch?v=brSU-lAACiA&feature=autoshare\";s:13:\"td_last_video\";s:60:\"http:\/\/www.youtube.com\/watch?v=brSU-lAACiA&feature=autoshare\";}"

pattern = "v=(...........)"

local vidid =   string.match(string, pattern)

有11个点,因为Youtube视频ID只有11个字符。我不是制作这些模式的专家,所以如果有其他更简单、更短的方法,请与我分享。

2013-12-04 19:45:55
用户1009479
用户1009479

你的解决方法很好,但有可能到某个时候 Youtube 会使用不完全为 11 个字符的视频 ID,这是另一种解决方法:

local vidid = string.match(string, "%?v=(.-)&")

模式 "%?v=(.-)&" 匹配字符 ?,接着是 v= 以及 0 个或多个字符,最后以 & 结束。v=& 之间的字符被捕获,注意使用了 - 进行非贪婪匹配。

2013-12-05 01:02:04