c#正则表达式过滤youtube视频的ID [英] c# Regex to filter the ID of a youtube video

查看:22
本文介绍了c#正则表达式过滤youtube视频的ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道有类似的问题,但实际上我还没有看到一个涵盖所有可能的 youtube 网址的问题.我已经涵盖了除 2 种可能性之外的几乎所有内容的正则表达式.

(?<=(https?\:\/\/)?(m\.)?(www\.)?(youtube\.com|youtube\.de|youtu\.?be|youtube-nocookie\.com)/(.*?)(/|embed|vi?=|\?vi?=|watch\?|watch\?vi?\=?|watch\?v%|a=|u/1))([A-Za-z0-9_-]{11})

我过滤 URL 的开头,直到 .com 之后.然后,直到 11 个字符 ID 之前链接中的内容都无关紧要.由于除了 ID 之外,[A-Za-z0-9_-]{11} 还有其他可能的匹配项,我已经包含了 ID 的所有可能的前缀 (/|embed|vi...).现在正则表达式不起作用的 2 个可能情况是

https://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o"

http://youtu.be/-wtIMTCHWuI

第一个是因为在/之后有一个 11 个字符的字符串(Ingrid...)第二个是因为每个其他 URL 在 ID 之前都有多个/.我不知道如何解决这个问题.对于我尝试过的用户 URL (?!.(user/(.?)/)) 排除用户/随便/之后的所有内容,但这只会删除整行的匹配项,即使ID 和用户名都匹配.我知道该链接实际上没有 ID,因为它链接到一个配置文件,问题是它向我展示了除了我的正则表达式过滤的 ID 之外还有另一个字符串的可能性

对于第二个,我不知道如何解决它,因为在我看来,每个其他 URL 中都需要 2/.

这是我正在使用的列表

https://gist.github.com/rodrigoborgesdeoliveira/987683cfbcf>987683cfbcfb73

使用额外的 iframe 进行测试