读书人

正则表达式替换数字有关问题

发布时间: 2011-12-31 23:50:30 作者: rapoo

正则表达式替换数字问题
result = Regex.Replace(result, @"(<a(?=[^<>]*?id=""t1"").*?href="")[^""]*(""[^>]*>)[\s\S]*?(?=</a>)", string.Format("$1{0}$2{1}", textBox12.Text, textBox11.Text), RegexOptions.IgnoreCase);

我用上面的正则表达式想分别替换 <a id="t1" class=link_blue href="http://article.ednchina.com/Commu/20071219071733.htm">Infonetics:WiMAX设备销售额上升势头增强</a> 中的红色部分,可是如果textBox12.Text中的字符是以数字开始的,替换就出现了问题,原文就被替换成为<a id="t1" class=link_blue href="http://article.ednchina.com/Other/20080108052252.htm$22008国际CES更“绿”了</a>
为什么把后面>改为了$2,请问应该怎么解决呢?

[解决办法]
可以采用一种替代解决方案,把一次替换改成多次替换从而避免数据混淆的问题
楼主可以参考一下

C# code
 string a = "<a   id=\"t1\"   class=link_blue   href=\"http://article.ednchina.com/Commu/20071219071733.htm\"> Infonetics:WiMAX设备销售额上升势头增强 </a> ";            string reValue = "1212";            string reValue1 = "CSDN";            string regex1 = "(?<=<a[\\s\\S]*?href=\")[^\"']*?(?=\"[^>]*?>)";            string regex2 = "(?<=<a[^>]+?>)[^<]*?(?=\\</a>)";            string result = Regex.Replace(a, regex1,reValue);            result = Regex.Replace(result, regex2, reValue1);            MessageBox.Show(result);
[解决办法]
给要捕获的组命名就是了:

C# code
result = Regex.Replace(result, @"(?<text1><a(?=[^<>]*?id=""t1"").*?href="")[^""]*(?<text2>""[^>]*>)[\s\S]*?(?=</a>)", string.Format("${text1}{0}${text2}{1}", textBox12.Text, textBox11.Text), RegexOptions.IgnoreCase); 

读书人网 >C#

热点推荐