Csharp/C#教程:C#正则表达式从youtube和vimeo获取videoID由url分享


C#正则表达式从youtube和vimeo获取videoID由url

我正忙着创建两个正则表达式来过滤来自youtube和vimeovideo的id。 我已经有了以下表达式;

YouTube: (youtube.com/)(.*)v=([a-zA-Z0-9-_]+) Vimeo: vimeo.com/([0-9]+)$ 

正如我在下面解释的那样,有两种类型的url与我已经创建的正则表达式匹配。 来自Vimeo和YouTube的其他几种url并未被表达所覆盖。 我最喜欢的是所有这些都可以用两个表达式来涵盖。 一个适用于所有Vimeovideo,一个适用于所有YouTubevideo。 我一直在忙着尝试一些不同的表达方式,但到目前为止还没有成功。 我还在努力掌握正则表达式,所以我希望我能以正确的方式来帮助我! 如果需要更多信息,请告诉我!

VIMEOurl不匹配:

 https://vimeo.com/channels/hd#11384488 https://vimeo.com/groups/brooklynbands/videos/7906210 https://vimeo.com/staffpicks#13561592 

YOUTUBEurl不匹配

 https://www.youtube.com/user/username#p/a/u/1/bpJQZm_hkTE https://www.youtube.com/v/bpJQZm_hkTE https://youtu.be/bpJQZm_hkTE 

匹配的url

 https://www.youtube.com/watch?v=bWTyFIYPtYU&feature=popular https://vimeo.com/834881 

我们的想法是将上面提到的所有url与两个正则表达式相匹配。 一个用于vimeo,一个用于youtube。

在回答后更新Sedith:

这就是我的表达式现在的样子

 public static readonly Regex VimeoVideoRegex = new Regex(@"vimeo.com/(?:.*#|.*/videos/)?([0-9]+)", RegexOptions.IgnoreCase | RegexOptions.Multiline); public static readonly Regex YoutubeVideoRegex = new Regex(@"youtu(?:.be|be.com)/(?:(.*)v(/|=)|(.*/)?)([a-zA-Z0-9-_]+)", RegexOptions.IgnoreCase); 

在我的代码中

 var youtubeMatch = url.match(YoutubeVideoRegex ); var vimeoMatch = url.match(VimeoVideoRegex ); var youtubeIndex = (youtubeMatch.length - 1) var youtubeId = youtubeMatch[youtubeIndex]; 

正如您所看到的,我现在需要找到videoId在数组中的索引,其中正则表达式返回了匹配项。 但我希望它只返回id本身,所以我不需要修改代码,当vimeo的youtube决定改变那里的URL。 关于这个的任何提示?

我玩了一些例子并想出了这些:

 Youtube: youtu(?:.be|be.com)/(?:.*v(?:/|=)|(?:.*/)?)([a-zA-Z0-9-_]+) Vimeo: vimeo.com/(?:.*#|.*/videos/)?([0-9]+) 

他们应该匹配所有给定的。 (?:…)表示不会捕获括号内的所有内容。 所以只能获得id。

我自己也是一个正则表达式的新手,所以如果有人来这里尖叫不要听我的话也不要感到惊讶,但希望这些都会有所帮助。

我发现这个网站在制定模式时非常有用: http : //www.regexpal.com/

编辑:

得到这样的身份:

 string url = ""; //url goes here! Match youtubeMatch = YoutubeVideoRegex.Match(url); Match vimeoMatch = VimeoVideoRegex.Match(url); string id = string.Empty; if (youtubeMatch.Success) id = youtubeMatch.Groups[1].Value; if (vimeoMatch.Success) id = vimeoMatch.Groups[1].Value; 

这适用于普通的旧c#.net,不能担保asp.net

如果您正在使用视图模型编写一些应用程序(例如ASP.NET MVC):

 public string YouTubeUrl { get; set; } public string YouTubeVideoId { get { var youtubeMatch = new Regex(@"youtu(?:.be|be.com)/(?:.*v(?:/|=)|(?:.*/)?)([a-zA-Z0-9-_]+)") .Match(this.YouTubeUrl); return youtubeMatch.Success ? youtubeMatch.Groups[1].Value : string.Empty; } } 

Vimeo的:

上述就是C#学习教程:C#正则表达式从youtube和vimeo获取videoID由url分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 vimeo.com/(?:.*#|.*/)?([0-9]+) 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1010528.html

(0)
上一篇 2021年12月30日
下一篇 2021年12月30日

精彩推荐