一个正则表达式替换问题

bmiracle 2005-12-29 11:25:05
我在项目中遇到一个问题,看哪为高手能帮我解决该问题.
问题是:
需要将一段文本文件中的
"!stroek^"文本替换为"4stroek5"
也就是说只要是以"!"开头并以"^"结尾的字符串,都替换成以"4"开头并以"5"结尾的字符串,看看怎么能替换,因为文本中可能会存在"!^"或"^!"这种情况,这就不能替换了,换句话说,只替换本文件中的"!stroek^"这种成对的,中间带字符串的,所以考虑到需要用正则去匹配,然后替换,这方面我不太懂.


...全文
108 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
epaib 2005-12-29
  • 打赏
  • 举报
回复

output = input.Replace("!","4");
output = input.Replace("^","5");
output = input.Replace("45","!^");

这样要求你的字符串中,不能有。45出现。。。
止戈而立 2005-12-29
  • 打赏
  • 举报
回复
本来是想用5来替换掉^的。。可是它跟前面的$1粘在一块成了$15了。。用我改过后的代码就能实现你想要的东西了。。
bmiracle 2005-12-29
  • 打赏
  • 举报
回复
可能我没表达清楚,
结果应该是4stroek5,而不是4$15,中间内容不能变
谢谢
止戈而立 2005-12-29
  • 打赏
  • 举报
回复
不好意思。。小改一下:
string input="!stroek^";
string output="";

Regex reg=new Regex(@"\!(.+?)\^");
output=reg.Replace(input,"4"+"$1"+"~");
output=output.Replace("~","5");
止戈而立 2005-12-29
  • 打赏
  • 举报
回复
具体实现:

string input="!stroek^";
string output="";

Regex reg=new Regex(@"\!(.+?)\^");
output=reg.Replace(input,"4$15");

已通过测试
止戈而立 2005-12-29
  • 打赏
  • 举报
回复
Regex reg=new Regex (@"\!.+?\^");
低调的小青蛙 2005-12-29
  • 打赏
  • 举报
回复
表达式:
!(.+?)\^

替换为:
4$15

C#代码:
string str = Regex.Replace("!stroek^", @"!(.+?)\^", "4$15")
str 就可以得到 "4stroek5"

测试工具:(推荐)
http://www.regexlab.com/zh/replshop.asp?pat=%21%28.%2B%3F%29%5C%5E&rto=4%2415&txt=aaa%20%21stroek%5E%20%21ffff%5E%20%21xxxx%5E%20bbb

解释:
替换时,$1 就代表第一个括号内的表达式匹配到的内容。

更多帮助,欢迎查看正则表达式文档:(入门推荐)
http://www.regexlab.com/zh/regref.htm

110,536

社区成员

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

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

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