其中文本的壁是一个页源;我需要得到VIDEO_ID,L和T不带引号所以对于这样的部分。

“VIDEO_ID”: “lUoiKMxSUCw”, “L”:105, “SK”: “-2fL6AANk__E49CRzF6_Q8F7yBPWdb9QR”, “fmt_map”:“640000分之35/ 9/0 / 115,34 / 0/9/0/115 ,5/0/7/0 / 0" , “T”: “vjVQa1PpcFMbYtdhqxUip5Vtm856lwh7lXZ6lH6nZAg =”,

我需要以下

lUoiKMxSUCw

105

vjVQa1PpcFMbYtdhqxUip5Vtm856lwh7lXZ6lH6nZAg =

有人告诉我使用“正则表达式”,但我不知道如何使用它们。任何帮助将是很好:)

有帮助吗?

解决方案

使用该正则表达式可以是:

\"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”。 ; - )

其他提示

我觉得这个网站不错的学习,但如果你希望代码做你的工作,对不起..

这看起来像一个良好的开端:正则表达式中使用C#

和也这个网站是非常有益的

如果顺序总是相同的,你可以使用正则表达式:

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top