我通过httprespone得到的一段网页代码:我通过httprespone得到的一段网页代码
现在想取出hash的值
用了以下表达式但是匹配不成功:Regex re = new Regex("hash=\\\"(\\w{40})\\\"");求教正确的表达式另外怎么样把“\u5b87\u5b99\u5927\u7206\u70b8”这种字符转换为中文输出?

解决方案 »

  1.   

                string str = "hash=\"81d4f3ebe4cefaad4a304f9bd845958c71bfe594\" filesize=\"4531141884\" cmd_len=\"1\" filename=\"[CSDHD]\u5b87\u5b99\u5927\u7206\u70b8The.Big.Bang.2011.BluRay.720p.wmv\"";
                Regex reg = new Regex(@"hash=""([^'""\s]+)""");
                Response.Write(reg.Match(str).Groups[1].Value);
                Response.Write(HttpUtility.UrlDecode("\u5b87\u5b99\u5927\u7206\u70b8",Encoding.UTF8));
    /*
    81d4f3ebe4cefaad4a304f9bd845958c71bfe594
    宇宙大爆炸 
    */
      

  2.   

    上面的错了吧
    那个字体转换应该是
    Regex.Unespase()
      

  3.   


    string str="hash=\"81d4f3ebe4cefaad4a304f9bd845958c71bfe594\" filesize=\"4531141884\" cmd_len=\"1\" filename=\"[CSDHD]\u5b87\u5b99\u5927\u7206\u70b8The.Big.Bang.2011.BluRay.720p.wmv\"";
                string pattern = @"(?<=hash="")\w{40}";
                Regex regex = new Regex(pattern);
                Console.WriteLine(regex.Match(str).Value);
                //result:81d4f3ebe4cefaad4a304f9bd845958c71bfe594
      

  4.   

    你这里用这个好像不大对哦
    用这个试试呢string str="hash=\\\"81d4f3ebe4cefaad4a304f9bd845958c71bfe594\\\""
    你在变量里面实际上已经把“\"”转义成“"”了
    而我得到的原始字符串就是“hash=\"81d4f3ebe4cefaad4a304f9bd845958c71bfe594\"”才对
      

  5.   

    我是新手共同研究下,
    试试先解码再正则呢:string str ="....."//原始字符串
    string html = Regex.Unespase(str);
    Regex re = new Regex(@"\bhash=""(\w{40})""");
    /*
    处理过程
    */貌似能够匹配成功
      

  6.   

                string str = File.ReadAllText(Server.MapPath("TextFile.txt"));
                Regex reg = new Regex(@"hash=\\""([^'""\s]+)\\""");
                Response.Write(reg.Match(str).Groups[1].Value);/*
    TextFile.txt
    hash=\"81d4f3ebe4cefaad4a304f9bd845958c71bfe594\" filesize=\"4531141884\" cmd_len=\"1\" filename=\"[CSDHD]\u5b87\u5b99\u5927\u7206\u70b8The.Big.Bang.2011.BluRay.720p.wmv\"
    */
      

  7.   

    试验了一下,楼上2位的能够成功匹配。再问一个,能不能把hash放在Groups[1]里面,filename放在Groups[2]里面
    请恕小弟啰嗦!
      

  8.   

    Regex re = new Regex("hash=\\\"(\\w{40})\\\"");
      

  9.   

                string str = File.ReadAllText(Server.MapPath("TextFile.txt"));
                Regex reg = new Regex(@"hash=\\""([^""]+)\\""(?:(?!filename).)*filename=\\""([^""]+)\\""");
                Response.Write(reg.Match(str).Groups[1].Value + "===" + reg.Match(str).Groups[2].Value);
    /*
    81d4f3ebe4cefaad4a304f9bd845958c71bfe594===[CSDHD]\u5b87\u5b99\u5927\u7206\u70b8The.Big.Bang.2011.BluRay.720p.wmv 
    */
      

  10.   

    感谢 huangwenquan123 兄细心教导,问题解决,结贴