C#のWebページのソースを解析
-
05-09-2019 - |
質問
ページのソースであるテキストの壁の中で、私は、このようなセクションのために引用符なし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」をインポートすることを忘れないでください。 ; - )
他のヒント
順序は常に同じである場合は、この正規表現を使用することができます:
"video_id"\s*:\s*"([^"]*)"\s*,\s*"l"\s*:\s*(\d+)\s*(?:,\s*"[^"]*"\s*:\s*"[^"]*"\s*)*,\s*"t"\s*:\s*"([^"]*)"
そうしないと、リスト内の各エントリをつかむと、あなたは必要なものを選ぶ必要があります。
所属していません StackOverflow