private void button2_Click(object sender, EventArgs e)
        {
            string url="";
            string hexpwd="";
            string sid="";
            string r="";
            string extend="";
            string r_sid="";
            string login_url = "";
            string rip = "";
            Regex imgreg = new Regex("马上登录\\s<go\\shref=\"(?<url>[^\"]*)\"[\\s\\S]*\"hexpwd\"\\svalue=\"(?<hexpwd>\\S*)\"[\\s\\S]*\"sid\"\\svalue=\"(?<sid>[^\"]*)\"[\\S\\s]*\"r\"\\svalue=\"(?<r>\\d+)\"[\\s\\S]*\"extend\"\\svalue=\"(?<extend>[^\"]+)\"[\\s\\S]*\"r_sid\"\\svalue=\"(?<r_sid>[^\"]+)\"[\\s\\S]*\"login_url\"\\svalue=\"(?<login_url>[^\"]*)\"[\\s\\S]*\"rip\"\\svalue=\"(?<rip>\\S*)\"", RegexOptions.None);
            Match imgmat = imgreg.Match(loginhtml);
            if (imgmat.Success)
            {
                url = imgmat.Groups["url"].Value;
                hexpwd = imgmat.Groups["hexpwd"].Value;
                sid = imgmat.Groups["sid"].Value;
                r = imgmat.Groups["r"].Value;
                extend = imgmat.Groups["extend"].Value;
                r_sid = imgmat.Groups["r_sid"].Value;
                login_url = imgmat.Groups["login_url"].Value;
                rip = imgmat.Groups["rip"].Value;
            }
            else
            {
                MessageBox.Show("系统错误,正则匹配失败");
            }
        }我这样处理的时候会提示正则匹配失败,loginhtml为string型,但如果添加上richtextb.text=loginhtml;之后,Match imgmat = imgreg.Match(richtextbox.text);这样就不会出错了,这是怎么回事啊?我通过断点看到的是imgmat的值为null。

解决方案 »

  1.   

    你的loginhtml 哪来的,有没有初始化?
    Match imgmat = imgreg.Match(richtextbox.text);这样richtextbox.text的值应该是"",没能字符匹配不到,loginhtml 要是没有初始化值应该为null会报错,你检查下!
      

  2.   

    初始化了,我用断点发现loginhtml有值传入的啊
      

  3.   

    初始化了,我用断点发现loginhtml有值传入的啊
      

  4.   

    有值传入不一定匹配成功。
    还有赋值到TEXT就不错了。能有这情况?
    那你调度看TEXT与loginhtml有差异么?
      

  5.   

    有值传入不一定匹配成功。
    还有赋值到TEXT就不错了。能有这情况?
    那你调度看TEXT与loginhtml有差异么?