c# Regex过滤youtube视频的ID
c# Regex to filter the ID of a youtube video
我知道有类似的问题,但我还没有真正看到一个遍及所有可能的 youtube 的问题 url。
我已经掌握的正则表达式几乎涵盖了除 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 之后。然后 link 中的内容直到 11 个字符 ID 都无关紧要。由于除了 ID 之外还有 [A-Za-z0-9_-]{11} 的其他可能匹配项,因此我包含了 ID 的所有可能前缀 (/|embed|vi...)。
现在 Regex 不起作用的 2 个可能性是
https://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o"
和
第一个是因为在 / (Ingrid...) 之后有一个 11 个字符的字符串
第二个是因为每个 URL 在 ID 前都有一个以上的 / 。
我不确定如何解决这个问题。
对于用户 URL 我已经尝试 (?!.(user/(.?)/)) 在 user/whatever/ 之后排除所有内容,但这只是删除整行的匹配,即使 ID 和用户名都匹配。
我知道 link 并没有真正的 ID,因为它 link 是一个配置文件,问题是它向我展示了除了我的正则表达式的 ID 之外还有另一个字符串的可能性过滤器
对于第二个,我不知道如何解决它,因为在我看来,其他每个都需要 2 / URL。
这是我正在使用的列表
https://gist.github.com/rodrigoborgesdeoliveira/987683cfbfcc8d800192da1e73adc486
使用额外的 iframe 进行测试
<iframe width="560" height="315" src="https://www.youtube.com/embed/BKapPQxcR3Q" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
非常感谢
请尝试以下正则表达式。捕获的组 1 将具有视频 ID。
(?:(?:(?<=[vi])(?:=|%3D)|\/))([A-Za-z0-9_-]{11})[&?\s#%\"]
我知道有类似的问题,但我还没有真正看到一个遍及所有可能的 youtube 的问题 url。 我已经掌握的正则表达式几乎涵盖了除 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 之后。然后 link 中的内容直到 11 个字符 ID 都无关紧要。由于除了 ID 之外还有 [A-Za-z0-9_-]{11} 的其他可能匹配项,因此我包含了 ID 的所有可能前缀 (/|embed|vi...)。 现在 Regex 不起作用的 2 个可能性是
https://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o"
和
第一个是因为在 / (Ingrid...) 之后有一个 11 个字符的字符串 第二个是因为每个 URL 在 ID 前都有一个以上的 / 。 我不确定如何解决这个问题。 对于用户 URL 我已经尝试 (?!.(user/(.?)/)) 在 user/whatever/ 之后排除所有内容,但这只是删除整行的匹配,即使 ID 和用户名都匹配。 我知道 link 并没有真正的 ID,因为它 link 是一个配置文件,问题是它向我展示了除了我的正则表达式的 ID 之外还有另一个字符串的可能性过滤器
对于第二个,我不知道如何解决它,因为在我看来,其他每个都需要 2 / URL。
这是我正在使用的列表
https://gist.github.com/rodrigoborgesdeoliveira/987683cfbfcc8d800192da1e73adc486
使用额外的 iframe 进行测试
<iframe width="560" height="315" src="https://www.youtube.com/embed/BKapPQxcR3Q" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
非常感谢
请尝试以下正则表达式。捕获的组 1 将具有视频 ID。
(?:(?:(?<=[vi])(?:=|%3D)|\/))([A-Za-z0-9_-]{11})[&?\s#%\"]