C# 正则表达式按模式查找并仅替换一部分

C# 正则表达式按模式查找并仅替换一部分,c#,regex,C#,Regex,我想编写一个正则表达式来寻找这个模式:asdf=123,然后一旦在文件/字符串中找到某个内容,它应该将123部分替换为bbbcddd 我怎样才能在C#中做到这一点?您可以这样做: string pattern = "asdf=123"; Regex r = new Regex(@"(.*?=)(.*)"); Match m = r.Match(pattern); if(m.Success) Console.WriteLine(m.Groups[1].Value

我想编写一个正则表达式来寻找这个模式:
asdf=123
,然后一旦在文件/字符串中找到某个内容,它应该将
123
部分替换为
bbbcddd


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

您可以这样做:

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()));
   string pattern = "asdf=123";
   Console.WriteLine(Regex.Replace(pattern, @"(.*?=)(\d)(\d)(\d)", "$1$4$3$2"));
上面的内容将匹配任何内容,直到找到一个等于(
(.*?=)
)并将其放入一个组。然后,它将匹配下面的内容并将其放入另一个组(
(.*)
)。然后,第一组按原样打印,而第二组的内容则相反

一种不太详细但不太灵活的方法是使用
Regex.Replace
,如下所示:

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()));
   string pattern = "asdf=123";
   Console.WriteLine(Regex.Replace(pattern, @"(.*?=)(\d)(\d)(\d)", "$1$4$3$2"));
这是不太稳健,但因为你需要知道的数字量之前手

编辑:根据您的编辑:


您需要使用:
Regex.Replace(“asdf=123”,(.*=)\d{3},“$1BBBCCDDD”)
Console.WriteLine(Regex.Replace(“11asdf=123 ttt”,@”)(?此链接是否有帮助?):请提供更多详细信息。字符串/文件中“asdf=123”之后/之前是什么?如果它类似于“asdasd\uuuuuuuuuuuuuu\asdf=123”这是一回事ZZZZASDF=12309656097"-是不同的。如果您提供此字符串的缩短示例,那就太好了。值是固定的?或者它只是您正在寻找的模式的示例?我不需要反转。任何字符串都可以在there@devhedgehog:我已经更新了我的答案。即使你的编辑完全改变了你的问题。
*?
部分让我害怕在一个大而任意的字串中。
(\S*=)
可能更好。对于这种方法,regex是一种过分的方法,只需string.Replace就足够了