首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Regex使用CSV视频ID解析Youtube url

Regex使用CSV视频ID解析Youtube url
EN

Stack Overflow用户
提问于 2016-08-22 05:21:15
回答 3查看 248关注 0票数 0

我试图抓取以逗号分隔格式的YouTube视频id。

网址:7fM,ujmoYyEyDP8,cwRFjWdxeRQ,Z4BKV121mP4,T241s7O7-Io

我的预期产出:

代码语言:javascript
运行
复制
ClcKC_U_7fM, ujmoYyEyDP8, cwRFjWdxeRQ, Z4BKV121mP4, T241s7O7-Io

我试着跟着

代码语言:javascript
运行
复制
Regex regexPattern = new Regex(@"""[^""\r\n]*""|'[^'\r\n]*'|[^,\r\n]*");
    Match matchResults = regexPattern.Match(url);
    while (matchResults.Success) 
    {
        Console.WriteLine(matchResults.Value);
        matchResults = matchResults.NextMatch();
    }

输出

代码语言:javascript
运行
复制
http://www.youtube.com/watch?v=ClcKC_U_7fM

ujmoYyEyDP8

cwRFjWdxeRQ

Z4BKV121mP4

T241s7O7-Io

我试过其他方法

代码语言:javascript
运行
复制
 var regex = new Regex(@"(?:.+?)?(?:\\/v\\/|watch\\/|\\?v=|\\&v=|youtu\\.be\\/|\\/v=|^youtu\\.be\\/)([a-zA-Z0-9_-]{11})+");
            foreach (Match match in regex.Matches(url))
            {
                //Console.WriteLine(match);
                foreach (var groupdata in match.Groups.Cast<Group>().Where(groupdata => !groupdata.ToString().StartsWith("http://") && !groupdata.ToString().StartsWith("https://") && !groupdata.ToString().StartsWith("youtu") && !groupdata.ToString().StartsWith("www.")))
                {
                    groupdata.ToString();
                    Console.WriteLine(groupdata.ToString());
                }
            }

输出

代码语言:javascript
运行
复制
ClcKC_U_7fM

想不想得到后续的结果?

代码语言:javascript
运行
复制
ClcKC_U_7fM, ujmoYyEyDP8, cwRFjWdxeRQ, Z4BKV121mP4, T241s7O7-Io

更新

我忘了提到各种url模式

代码语言:javascript
运行
复制
1) http://www.youtube.com/watch?v=ClcKC_U_7fM,ujmoYyEyDP8,cwRFjWdxeRQ,Z4BKV121mP4,T241s7O7-Io

2) http://www.youtube.com/embed/watch?feature=player_embedded&v=ClcKC_U_7fM,ujmoYyEyDP8,cwRFjWdxeRQ,Z4BKV121mP4,T241s7O7-Io

3) http://www.youtube.com/watch?v=ClcKC_U_7fM,ujmoYyEyDP8,cwRFjWdxeRQ,Z4BKV121mP4,T241s7O7-Io&feature=related

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-22 06:00:37

使用OP发布的原始代码,用以下代码替换正则表达式(?<=(v=)|,)[^(,|&)]*

代码语言:javascript
运行
复制
string url = "http://www.youtube.com/watch?v=ClcKC_U_7fM,ujmoYyEyDP8,cwRFjWdxeRQ,Z4BKV121mP4,T241s7O7-Io";
Regex regexPattern = new Regex("(?<=(v=)|,)[^(,|&)]*");
Match matchResults = regexPattern.Match(url);
while (matchResults.Success)
{
    Console.WriteLine(matchResults.Value);
    matchResults = matchResults.NextMatch();
}

输出:

代码语言:javascript
运行
复制
ClcKC_U_7fM
ujmoYyEyDP8
cwRFjWdxeRQ
Z4BKV121mP4
T241s7O7-Io
票数 3
EN

Stack Overflow用户

发布于 2016-08-22 05:28:19

代码语言:javascript
运行
复制
string url = "http://www.youtube.com/embed/watch?feature=player_embedded&v=ClcKC_U_7fM,ujmoYyEyDP8,cwRFjWdxeRQ,Z4BKV121mP4,T241s7O7-Io";

string[] s1 = url.Split('?');
string[] queries = s1[1].Split('&');

foreach (string query in queries)
{
    if (query.ToLower().StartsWith("v="))
    {
        string[] s2 = query.Split('=');
        string[] s3 = s2[1].Split(',');

        foreach (string s in s3)
        {
            Console.WriteLine(s);
        }

        break;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2016-08-22 05:28:21

如果您首先在=符号处拆分您的url,然后使用简单的字符串拆分,则可能会更容易。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39071846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档