日期:2014-05-16  浏览次数:20542 次

求 一个字符串 正反 替换 正则表达式
1.<cc1:XYZ ID="17_XYZ_ID" runat="server" TableID="17" FieldName="Title"></cc1:XYZ>


2.<img id="17_XYZ_ID" src="images/textbox.gif" type="XYZ" fieldname="Title" tableid="17" /> 

求相互 互换 2个正则替换的表达式

条件如下:
id="17_XYZ_ID" 这个有可能没有,要判断没有的情况也能互换

当1时
替换条件是<cc1开头</cc1...>结尾
XYZ 替换 到 下面img的 type="XYZ"  这里XYZ是动态值
再就是把<cc1开头</cc1...>结尾替换成<img开头 />结尾
增加src="images/textbox.gif"固定属性,其它特性都保留(都是动态值)
 

当2时
替换条件是src为images/textbox.gif的img标签
type="XYZ" 替换成 <cc1:XYZ ... ></cc1:XYZ>
src="images/textbox.gif"固定属性去掉,增加runat="server"
其它特性都保留(都是动态值)

最后的效果,就是可以用两个正则进行互转,这些字符串都在HTML中寻找




------解决方案--------------------
试试
string str1 = @"<cc1:XYZ ID=""17_XYZ_ID"" runat=""server"" TableID=""17"" FieldName=""Title""></cc1:XYZ>";

            //转img
            string v1 = Regex.Replace(str1, @"(?i)<(cc1:(\S+))([^>]*?)></\1>", m => 
            {

                return string.Format(@"<img type=""{0}"" {1} src=""{2}""/>", m.Groups[2].Value, Regex.Replace(m.Groups[3].Value, @"(?i)\s+runat=""server""", ""), "images/textbox.gif");
            });
            //从img转cc1
            string v2 = Regex.Replace(v1, @"(?i)<img([^>]*?)type=""([^'""]*?)""([^>]*?)>", m => 
            {
                return string.Format(@"<cc1:{0} {1}></ccs:{0}>",m.Groups[2].Value,Regex.Replace(m.Groups[1].Value+m.Groups[3].Value,@"(?i)\s+src=""images/textbox.gif""",@"runat=""server"""));
            });

------解决方案--------------------
update:
1.
str=Regex.Replace(str,@"(?i)<cc1:(\S+)([^>]*?)></cc1:\1>","<img src=\"images/textbox.gif\" $2></img>");


2.
str=Regex.Replace(str,@"(?i)<img\b([^>]*?)src=""images/textbox.gif""([^>]*?)type=""([^""]+)""([^>]*?)/?>","<cc1:$3 $1 runat=\"server\" $2 $4></cc1:$3>"