【问题标题】:How to extract youtube video id from a URL in Lua如何从 Lua 中的 URL 中提取 youtube 视频 ID
【发布时间】:2013-12-05 09:03:08
【问题描述】:

我需要从位于 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\";}"

模式应该是什么?

【问题讨论】:

    标签: string lua lua-patterns


    【解决方案1】:

    我想我明白了。

    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 个字符。我不是制作这些模式的专家,所以如果有其他更简单、更短的方法,请与我分享。

    【讨论】:

    • 如果您确定视频 ID 正好是 11 个字符,这很好。为了稳健性,我会使用"[?&]v=(...........)",以防万一还有其他名称以v结尾的字段。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-10-24
      • 2017-02-08
      • 2012-05-22
      • 2011-03-28
      • 2019-12-07
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      相关资源
      最近更新 更多