C # Analisi sorgente di una pagina web
-
05-09-2019 - |
Domanda
Tra il muro di testo che è una fonte di pagine; Ho bisogno di ottenere il video_id, l e t senza le virgolette così per una sezione come questo.
"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 ="
ho bisogno del seguente
lUoiKMxSUCw
105
vjVQa1PpcFMbYtdhqxUip5Vtm856lwh7lXZ6lH6nZAg =
Mi è stato detto di usare "espressioni regolari", ma io non sono a sicuro come usarli. qualsiasi aiuto sarebbe bello:)
Soluzione
Il Regex da usare potrebbe essere:
\"video_id\":\s*\"(?<videoID>.*?)\"(?:.*?)\"l\":\s*(?<l>.*?),(?:.*?)\"t\":\s*\"(?<t>.*?)\"
Ecco alcuni esempi di codice per ottenere installato e funzionante:
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);
}
Non dimenticare di importare "System.Text.RegularExpressions". ; -)
Altri suggerimenti
Credo che questo siti buono per l'apprendimento, ma se vi aspettate il codice per fare il vostro lavoro, mi spiace ..
questo sembra un buon punto di partenza: espressioni regolari di utilizzo in C #
E anche questo sito è molto utile
Se l'ordine è sempre lo stesso, si potrebbe usare questa espressione regolare:
"video_id"\s*:\s*"([^"]*)"\s*,\s*"l"\s*:\s*(\d+)\s*(?:,\s*"[^"]*"\s*:\s*"[^"]*"\s*)*,\s*"t"\s*:\s*"([^"]*)"
In caso contrario, si dovrebbe prendere ogni voce in un elenco e quindi scegliere quelli fuori il necessario.