从Youtube中获取Youtube ID在C#中嵌入URL

时间:2012-06-21 14:21:28

标签: c# .net regex

我需要从youtube嵌入网址获取youtube id / url。没有太多正则表达式(不必是正则表达式)经验,我很难从嵌入网址中获取网址。 有人这是最简单的方法吗?

http://pastebin.com/708GPJnR

1 个答案:

答案 0 :(得分:0)

您的示例似乎不是完整的YouTube视频ID。据我了解,youtube视频ID长度为11个字符。

也就是说,我将您的示例嵌入式URL修改为11个字符(最后添加1个),并使用XML和您的问题(stackoverflow.com/a/1773972/56778)中引用的正则表达式的组合来做以下内容:

var xmlFrag = @"<object width='530' height='319'>
                  <param name='movie' value='**http://www.youtube.com/v/973r7347&amp;hl=en_US&amp;fs=1&amp;rel=0**' />
                  <param name='allowFullScreen' value='true' />
                  <param name='allowscriptaccess' value='always' />
                  <embed src='http://www.youtube.com/v/973r7347111&amp;hl=en_US&amp;fs=1&amp;rel=0' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' width='530' height='319'></embed>
                </object>";
var doc = new XmlDocument();
doc.LoadXml(xmlFrag);
var match = Regex.Match(doc.SelectSingleNode("/object/embed").Attributes["src"].Value,
                                          "^http://(?<domain>([^./]+\\.)*youtube\\.com)(/v/|/watch\\?v=)(?<videoId>[A-Za-z0-9_-]{11})", RegexOptions.IgnoreCase);

String youtubeId;
if (match.Success)
  youtubeId = match.Groups[4].Value;