C#解析网页的来源

时间:2009-02-23 10:11:33

标签: c# .net asp.net regex data-mining

作为页面源的文本墙;我需要得到没有引号的video_id,l和t,所以对于这样的部分。

“video_id”:“lUoiKMxSUCw”,“l”:105,“sk”:“ - fL6AANk__E49CRzF6_Q8F7yBPWdb9QR”,“fmt_map”:“35/640000 / 9/0 / 115,34/0/9/0/115 ,5 / 0/7/0/0“,”t“:”vjVQa1PpcFMbYtdhqxUip5Vtm856lwh7lXZ6lH6nZAg =“,

我需要以下

lUoiKMxSUCw

105

vjVQa1PpcFMbYtdhqxUip5Vtm856lwh7lXZ6lH6nZAg =

我被告知使用“正则表达式”,但我不确定如何使用它们。任何帮助都会很好:)

3 个答案:

答案 0 :(得分:1)

我认为这个网站很适合学习,但如果你希望代码能够完成你的工作,那就抱歉..

这似乎是一个好的开始:Regular Expressions Usage in C#

此外this site非常有用

答案 1 :(得分:1)

要使用的正则表达式可能是:

\"video_id\":\s*\"(?<videoID>.*?)\"(?:.*?)\"l\":\s*(?<l>.*?),(?:.*?)\"t\":\s*\"(?<t>.*?)\"

以下是一些示例代码,可帮助您启动并运行:

string sample = "\"video_id\": \"lUoiKMxSUCw\", \"l\": 105, \"sk\": \"-2fL6AANk__E49CRzF6_Q8F7yBPWdb9QR\", \"fmt_map\": \"35/640000/9/0/115,34/0/9/0/115,5/0/7/0/0\", \"t\": \"vjVQa1PpcFMbYtdhqxUip5Vtm856lwh7lXZ6lH6nZAg=\",";
string regPattern = "\\\"video_id\\\":\\s*\\\"(?<videoID>.*?)\\\"(?:.*?)\\\"l\\\":\\s*(?<l>.*?),(?:.*?)\\\"t\\\":\\s*\\\"(?<t>.*?)\\\"";
Regex reg = new Regex(regPattern, RegexOptions.Singleline);
if (reg.IsMatch(sample))
{
    Match m = reg.Match(sample);
    GroupCollection gColl = m.Groups;
    Console.WriteLine("VideoID:{0}", gColl["videoID"].Value);
    Console.WriteLine("l:{0}", gColl["l"].Value);
    Console.WriteLine("t:{0}", gColl["t"].Value);
}

不要忘记导入“System.Text.RegularExpressions”。 ; - )

答案 2 :(得分:0)

如果订单始终相同,您可以使用此正则表达式:

"video_id"\s*:\s*"([^"]*)"\s*,\s*"l"\s*:\s*(\d+)\s*(?:,\s*"[^"]*"\s*:\s*"[^"]*"\s*)*,\s*"t"\s*:\s*"([^"]*)"

否则你应该抓住列表中的每个条目,然后选择你需要的条目。