日期:2014-05-17  浏览次数:20805 次

正则组的替换
<Open zh-cn="" zh-hk="日期" en-ww=""/>

我想把繁体的日期移到简体zh-cn=""里.变成:
<Open zh-cn="日期" zh-hk="日期" en-ww=""/>

希望是用正则组的方法实现.这样比较不容易出错.

正则组: (?<标签>正则) 
Regex reg = new Regex(@"");
            MatchCollection match = reg.Matches(str);
            foreach (Match m in match)
            {
                System.Console.WriteLine(m.Groups["标签"].Value);
            }
这样是找到匹配的组.
以前用正则都是找匹配.没试过替换.现在想替换.求大神指教.

------解决方案--------------------
 string str = @"<Open zh-cn="""" zh-hk=""日期"" en-ww=""""/>";
Regex reg = new Regex(@"(?i)<Open\s*[^>]*?zh-cn=""([^""]*?)""[^>]*?zh-hk=""([^""]*?)""[^>]*?/>");
str = reg.Replace(str, @"(?is)(zh\-cn="")(?=[^<>]*?zh\-hk=""([^""]+))("")", @"<Open zh-cn=""$2"" zh-hk=""$2"" en-ww=""""/>");
Console.WriteLine(str);
           
------解决方案--------------------
引用:
引用:str = Regex.Replace(str, @"(?is)(?=[^<>]*?zh\-hk=""([^""]+))(zh\-cn="")[^""]*("")", "$2$1$3");这个方法不能用.
我的步骤是
1.找到组一内容.
2.翻译成简体.
3.替换回组二内容.

 str = Regex.Replace(str, @"(?is)(?=[^<>]*?zh\-hk=""([^""]+))(zh\-cn="")[^""]*("")", delegate(Match m)
            {
                string s = m.Groups[2].Value;//繁体
                //转换简体s
                return s + m.Groups[1].Value + m.Groups[3].Value;
            });