我想写一个正在寻找这种模式的正则表达式:asdf=123
然后一旦在文件/字符串中找到某些东西,它应该只将123
部分替换为{{1 }}
我怎样才能在C#中做到这一点?
答案 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")