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

使用する正規表現は次のとおりです。

\"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 に答える
1

このサイトは学習に適していると思いますが、コードが機能することを期待している場合は、申し訳ありません..

これは良いスタートのように見えます : C# での正規表現の使用

また、このサイトもとても参考になります

于 2009-02-23T10:19:39.200 に答える
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 に答える