我需要从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\";}"
该模式应该是什么?
答案 0 :(得分: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)
因为Youtube视频ID只有11个字符,所以有11个点。我不是制作这些模式的专家,所以如果还有其他更简单的方法,请与我分享。
答案 1 :(得分:1)
您自己的解决方案运行正常,但Youtube决定使用不完全 11 字符的视频ID的时间可能会到来,这是您的替代解决方案:
local vidid = string.match(string, "%?v=(.-)&")
模式"%?v=(.-)&"
匹配字符?
,后跟v=
,后跟0个或更多字符,然后以&
结尾。捕获v=
和&
之间的字符,注意使用-
进行非贪婪匹配。