首页新闻找找看学习计划

C#正则match有问及string变量

0
悬赏园豆:50 [待解决问题]

代码:
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.Compiled);
            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型。。。。。
这样代码是会提示系统错误,正则匹配失败的。。。。。。
如果加上:
richtextbox.text=loginhtml;
里面改为Match imgmat = imgreg.Match(richtextbox.text);
这样就不会出错了,这是怎么了?
我在前面的代码处理中用过几次Match imgmat = imgreg.Match(loginhtml);处理一小段正则是可以的啊,就这个出了问题

donsy的主页 donsy | 初学一级 | 园豆:152
提问于:2012-08-20 22:44
< >
分享
所有回答(2)
0

可能提交的时候loginhtml的值丢失或变了,而你用richtextbox.text保存了loginhtml就没这个问题。

向往-SONG | 园豆:4853 (老鸟四级) | 2012-08-20 23:05

断点看了是没有变的。。。。。。。

支持(0) 反对(0) donsy | 园豆:152 (初学一级) | 2012-08-20 23:07
0

但URL参数中包含中文时,浏览器会自动对参数进行Encode,这样就匹配不上了

西夏普砖家 | 园豆:183 (初学一级) | 2012-08-21 01:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册