一个正则表达式的问题.替换搜索到的子匹配的字符串.

seaofsoul 2006-06-03 10:37:41
例如:
abcdEEaaaaaEEfghiEEbbbbbEEjklEEcccccEEmnopq
如果正则表达式为:/EE(.*)EE/不就可以匹配到如下几项
EEaaaaaEE
EEbbbbbEE
EEcccccEE
假如我要把源字符串替换为:
abcdEExxxxxEEfghiEEyyyyyEEjklEEzzzzzEEmnopq
即:aaaaa->xxxxx,bbbbb->yyyyy,ccccc->zzzzz
能用正则表达式实现吗?如果可以,怎么实现?
...全文
239 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxwstar 2006-06-13
  • 打赏
  • 举报
回复
与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);
输出结果为:
-------------------------------
abcdEExxxxxEEfghiEEyyyyyEEjklEEzzzzzEEmnopq
阿良chjlcn 2006-06-06
  • 打赏
  • 举报
回复
加多一个问号
EE(.*?)EE
seaofsoul 2006-06-06
  • 打赏
  • 举报
回复
to:Knight94(愚翁)
假如我的源串是这个:
aaaaabcdEEaaaaaEEfghiEEbbbbbEEjbbbbbklEEcccccEEmncccccopq
呢?你说能用Replace方法吗??
Knight94 2006-06-04
  • 打赏
  • 举报
回复
那你还不如用String.Replace呢
wcmj 2006-06-04
  • 打赏
  • 举报
回复
不是一样吗?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧