现有一组链接
/aspx/default/show.aspx?classid=12&id=73&page=2  替换为 73_2.html
/aspx/default/show.aspx?classid=12&id=73&page=3  替换为 73_3.html
/aspx/default/show.aspx?classid=12&id=73&page=4  替换为 73_4.html
/aspx/default/show.aspx?classid=12&id=73&page=5  替换为 73_5.html
/aspx/default/show.aspx?classid=12&id=73&&page=14  替换为 73_14.html要查找替换的正则怎么写啊。c#的

解决方案 »

  1.   

    正则不会,可以用Replace实现string src = "/aspx/default/show.aspx?classid=12&id=73&page=2";
    string result = src.Replace("&page=","_") + ".html";
      

  2.   


     string strHtml = @"/aspx/default/show.aspx?classid=12&id=73&page=2  /aspx/default/show.aspx?classid=12&id=73&page=3 
    /aspx/default/show.aspx?classid=12&id=73&page=4";                Regex re = new Regex(@"(?i)/.*?(&id=(?<id>[^\s&]*)&page=(?<page>[^\s&]*))[^\s]*");
                    strHtml = re.Replace(strHtml, new MatchEvaluator( SetUrl)); private string SetUrl(Match mc)
            {            return mc.Groups["id"].Value + "_" + mc.Groups["page"].Value + ".html";
            }
      

  3.   

    string strHtml = @"/aspx/default/show.aspx?classid=12&id=73&page=2  /aspx/default/show.aspx?classid=12&id=73&page=3 
    /aspx/default/show.aspx?classid=12&id=73&page=4";            Regex re = new Regex(@"(?i)(?:(?!&id=).)*&id=(?<id>[^\s&]*)&page=(?<page>[^\s&]*)[^\s]*");
                MatchCollection mc = re.Matches(strHtml);
                foreach(Match m in mc)
                    Console.WriteLine("{0}_{1}.html",m.Groups["id"].Value,m.Groups["page"].Value);