我正在尝试从播放列表来源中找到所有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>.+?)&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。如果是这样,它将跳到新的,所以它不会显示多次。
答案 0 :(得分:0)
您正在编写整个匹配对象。而不是Console.WriteLine(m);
使用Console.WriteLine(vid);
。
vid
是具有视频ID的组的值。
注意:正则表达式不是解析html的最佳方法。我建议你使用像HtmlAgilityPack这样的库。