C#使用正则表达式

时间:2016-03-14 23:02:00

标签: c# regex

我正在尝试从播放列表来源中找到所有YouTube视频ID。但我对Regex并不太熟悉,所以对我来说这很难。

这是我目前的代码:

Console.Write("Playlist? Ex: \"PLaJlh8L9CwotfVy6fAtlphD_JD6IgSTMx\": ");
        string playlist = Console.ReadLine();
        string source = client.DownloadString("http://www.youtube.com/playlist?list=" + playlist);

        Regex reg = new Regex(".*?href=\"/watch\\?v=(?<vid>.+?)&amp;list="+ playlist);
        MatchCollection mc1 = reg.Matches(source);
        foreach (Match m in mc1)
        {
            string vid = m.Groups["vid"].Value;
            Console.WriteLine(m);
            Console.ReadLine();
        }

我希望它遍历源并显示它在源中找到的每个视频ID。视频ID的示例是“https://www.youtube.com/watch?v=EzuvVs953Gs

中的“EzuvVs953Gs”

到目前为止,它确实显示包含视频ID的所有内容,但它显示整行。我希望它只显示ID。我也希望它能够检查它是否已经找到了ID。如果是这样,它将跳到新的,所以它不会显示多次。

1 个答案:

答案 0 :(得分:0)

您正在编写整个匹配对象。而不是Console.WriteLine(m);使用Console.WriteLine(vid);

vid是具有视频ID的组的值。

注意:正则表达式不是解析html的最佳方法。我建议你使用像HtmlAgilityPack这样的库。