1

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

“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=",

我需要以下

luoiKMxSUCw

105

vjVQa1PpcFMbYtdhqxUip5Vtm856lwh7lXZ6lH6nZAg=

有人告诉我使用“正则表达式”,但我不确定如何使用它们。你能帮忙的话,我会很高兴 :)

4

3 回答 3

1

我认为这个网站适合学习,但如果您希望代码完成您的工作,对不起..

这看起来是一个好的开始:C# 中的正则表达式用法

而且这个网站也很有帮助

于 2009-02-23T10:19:39.200 回答
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”。;-)

于 2009-02-23T10:46:03.193 回答
0

如果顺序始终相同,则可以使用以下正则表达式:

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

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

于 2009-02-23T10:36:50.563 回答