一个正则表达式的问题.替换搜索到的子匹配的字符串.
例如:
abcdEEaaaaaEEfghiEEbbbbbEEjklEEcccccEEmnopq
如果正则表达式为:/EE(.*)EE/不就可以匹配到如下几项
EEaaaaaEE
EEbbbbbEE
EEcccccEE
假如我要把源字符串替换为:
abcdEExxxxxEEfghiEEyyyyyEEjklEEzzzzzEEmnopq
即:aaaaa->xxxxx,bbbbb->yyyyy,ccccc->zzzzz
能用正则表达式实现吗?如果可以,怎么实现?
问题点数:20、回复次数:5Top
1 楼wcmj(望尘莫及)回复于 2006-06-04 13:50:14 得分 0
不是一样吗?Top
2 楼Knight94(愚翁)回复于 2006-06-04 13:53:58 得分 0
那你还不如用String.Replace呢Top
3 楼seaofsoul(海魂)回复于 2006-06-06 17:31:27 得分 0
to:Knight94(愚翁)
假如我的源串是这个:
aaaaabcdEEaaaaaEEfghiEEbbbbbEEjbbbbbklEEcccccEEmncccccopq
呢?你说能用Replace方法吗??
Top
4 楼chjlcn(http://www.chenjiliang.com)回复于 2006-06-06 18:34:33 得分 0
加多一个问号
EE(.*?)EETop
5 楼lxwstar(狂搏无悔)回复于 2006-06-13 17:22:12 得分 0
与EE(.*)EE匹配后将得到:EEaaaaaEEfghiEEbbbbbEEjklEEcccccEE,而不是你想得到的结果。
应该改为:EE(?<IWant>[\\w][^E]+)EE
代码如下:
string str = "abcdEEaaaaaEEfghiEEbbbbbEEjklEEcccccEEmnopq";
string strPattern = "EE(?<IWant>[\\w][^E]+)EE";
Regex r = new Regex(strPattern4,RegexOptions.Compiled);
MatchCollection mc = r.Matches(str);
str = str.Replace(mc[0].Result("${IWant}"),"xxxxx");
str = str.Replace(mc[1].Result("${IWant}"),"yyyyy");
str = str.Replace(mc[2].Result("${IWant}"),"zzzzz");
Console.WriteLine(str);
输出结果为:
-------------------------------
abcdEExxxxxEEfghiEEyyyyyEEjklEEzzzzzEEmnopqTop




