ben*_*ben 5 ruby regex youtube url
目前我正在使用此正则表达式从Youtube网址中提取视频ID:
url.match(/v=([^&]*)/)[1]
Run Code Online (Sandbox Code Playgroud)
如何更改此设置,以便它还可以从此Youtube网址获取视频ID,该网址没有v参数:
http://www.youtube.com/user/SHAYTARDS#p/u/9/Xc81AajGUMU
Run Code Online (Sandbox Code Playgroud)
谢谢阅读.
编辑:我正在使用ruby 1.8.7
小智 12
对于Ruby 1.8.7,这将做到这一点.
url_1 = 'http://www.youtube.com/watch?v=8WVTOUh53QY&feature=feedf'
url_2 = 'http://www.youtube.com/user/ForceD3strategy#p/a/u/0/8WVTOUh53QY'
regex = /youtube.com.*(?:\/|v=)([^&$]+)/
puts url_1.match(regex)[1] # => 8WVTOUh53QY
puts url_2.match(regex)[1] # => 8WVTOUh53QY
Run Code Online (Sandbox Code Playgroud)
url.match(/[^\/]+$/)[0]
Run Code Online (Sandbox Code Playgroud)
在这种情况下应该有效。这将匹配字符串中最后一个斜杠后面的任何内容,因此它当然会匹配不仅仅是 YouTube 视频 ID。从你的问题我推断你已经知道链接是否是 Youtube 链接(因为你的正则表达式也很不具体),但如果你不知道,请尝试
url.match(/youtube.com.*([^\/]+$)/)[1]
Run Code Online (Sandbox Code Playgroud)
除非您使用的是 Ruby 1.9,否则您无法在单个正则表达式中完成此操作,因为 Ruby 1.8 不支持lookbehind。