正则表达式按模式查找并仅替换部件

时间:2015-07-10 07:48:38

标签: c# regex

我想写一个正在寻找这种模式的正则表达式:asdf=123然后一旦在文件/字符串中找到某些东西,它应该只将123部分替换为{{1 }}

我怎样才能在C#中做到这一点?

3 个答案:

答案 0 :(得分:2)

Console.WriteLine(Regex.Replace("11asdf=123 ttt", @"(?<=asdf=)123", "321"));

虽然我写了这段代码,但我认为会有很多问题,因为你没有清楚地描述你的问题,比如在asdf之前有些字符不是白色,或者123之后有一些字符。 1}},你还想替换123吗?

答案 1 :(得分:1)

string pattern = @"asdf=123";
var result = Regex.Replace(yourString, pattern, "asdf=bbbcccddd");

答案 2 :(得分:0)

你可以这样做:

string pattern = "asdf=123";
Regex r = new Regex(@"(.*?=)(.*)");
Match m = r.Match(pattern);
if(m.Success)            
      Console.WriteLine(m.Groups[1].Value + new String(m.Groups[2].Value.Reverse().ToArray()));

上述内容将匹配任何内容,直到找到等号((.*?=))并将其放在一个组中。然后它将匹配以下内容并将其放在另一个组((.*))中。然后按原样打印第一组,同时反转第二组的内容。

一种不那么冗长但不太灵活的方法是使用Regex.Replace,如下所示:

   string pattern = "asdf=123";
   Console.WriteLine(Regex.Replace(pattern, @"(.*?=)(\d)(\d)(\d)", "$1$4$3$2"));

这不太健壮,因为您需要事先知道数字的数量。

编辑:根据你的编辑:

您需要使用:Regex.Replace("asdf=123", "(.*?=)\d{3}","$1bbbcccddd")