2009-02-23 9 views
1

Parmi les murs de texte qui constituent une source de pages; J'ai besoin d'obtenir le video_id, l et t sans les guillemets donc pour une section comme celle-ci.C# Analyse de la source d'une page Web

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

i besoin de la

suivant

lUoiKMxSUCw

vjVQa1PpcFMbYtdhqxUip5Vtm856lwh7lXZ6lH6nZAg =

on m'a dit d'utiliser des "expressions régulières" mais je ne suis pas sûr de savoir comment les utiliser. toute aide serait bien :)

Répondre

1

Le Regex à utiliser pourrait être:

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

Voici quelques exemples de code pour vous lever et courir:

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); 
} 

Ne pas oublier d'importer "System.Text.RegularExpressions". ;-)

+0

attention de décomposer le code fourni afin que je puisse comprendre ce qui le rend plus de travail. – Fatal510

0

Si l'ordre est toujours le même, vous pouvez utiliser cette expression régulière:

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

Sinon, vous devriez saisir chaque entrée dans une liste et ensuite choisir celles dont vous avez besoin.