2

我需要brSU-lAACiA从 Lua 字符串变量中的 URL 中提取 youtube 视频 ID(例如,)。

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\";}"

模式应该是什么?

4

2 回答 2

2

我想我明白了。

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-04T19:45:55.350 回答
1

您自己的解决方案工作正常,但 Youtube 决定使用不完全是11 个字符的视频 ID 的时间可能会到来,这是您的替代解决方案:

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

该模式"%?v=(.-)&"匹配一​​个字符?,后面跟着v=0 个或多个字符,然后以 . 结尾&v=和之间的字符&被捕获,注意-用于非贪婪匹配。

于 2013-12-05T01:02:04.710 回答