我已经得到远程的页面内容,现在想通过正则得到想用的内容<img style="CURSOR: pointer" onclick='javascript:add("6108","tt","http://www.abc.cn/s58.html","http://img.abc.com.cn/714.JPG","59");' src="http://www.273.cn/themes/default/images/ico_compare.gif" align="absmiddle">页面上有多处这种格式的html代码,我现在想得到onclick里的这个网址http://www.abc.cn/s58.html这个正则该如何写?

解决方案 »

  1.   

    string str1 = "<img style=\"CURSOR: pointer\" onclick='javascript:add(\"6108\",\"tt\",\"http://www.abc.cn/s58.html\",\"http://img.abc.com.cn/714.JPG\",\"59\");' src=\"http://www.273.cn/themes/default/images/ico_compare.gif\" align=\"absmiddle\">";
                Regex re = new Regex("([\\s|.]*)\",\"(?<aa>(.+))\",([\\s|.]*)");
                System.Text.RegularExpressions.Match math = re.Match(str1);
                while (math.Success)
                {
                    str1 = math.Groups["aa"].Value;
                    math = re.Match(str1);
                }            return str1;
      

  2.   

    有问题
    正在分析“([\s|.]*)","(? <aa>(.+))",([\s|.]*)”- 无法识别的分组构造。
      

  3.   

    想要获取的网址就是以html结尾的?否则如何区分你要的结果和http://img.abc.com.cn/714.JPG
    MatchCollection mc = Regex.Matches(yourStr, @"(?<=onclick='[^']*?)http://[^'""]*?\.html", RegexOptions.IgnoreCase);
    foreach (Match m in mc)
    {
        Response.Write(m.Value + "<br>");
    }