【问题标题】:C# Parsing a webpage's sourceC#解析网页的源代码
【发布时间】:2010-10-09 07:00:38
【问题描述】:

在作为页面来源的文本墙中;我需要得到不带引号的 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=

有人告诉我使用“正则表达式”,但我不确定如何使用它们。任何帮助都会很好:)

【问题讨论】:

    标签: c# .net asp.net regex data-mining


    【解决方案1】:

    我认为这个网站适合学习,但如果您希望代码完成您的工作,对不起..

    这看起来是一个好的开始:Regular Expressions Usage in C#

    而且this site 也很有帮助

    【讨论】:

      【解决方案2】:

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

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

      否则,您应该获取列表中的每个条目,然后从中挑选出您需要的条目。

      【讨论】:

        【解决方案3】:

        要使用的正则表达式可以是:

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

        【讨论】:

        • 小心分解提供的代码,以便我了解是什么使它更有效。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-26
        相关资源
        最近更新 更多