我想编写一个正则表达式表示,将寻求这种模式:asdf=123
,然后一旦事情是在文件/字符串中发现,它应该只是更换123
部分bbbcccddd
。正则表达式的模式仅查找和替换部分
我该如何在C#中做到这一点?
我想编写一个正则表达式表示,将寻求这种模式:asdf=123
,然后一旦事情是在文件/字符串中发现,它应该只是更换123
部分bbbcccddd
。正则表达式的模式仅查找和替换部分
我该如何在C#中做到这一点?
Console.WriteLine(Regex.Replace("11asdf=123 ttt", @"(?<=asdf=)123", "321"));
虽然我写这篇文章的代码,但我认为会有很多问题,因为你没有描述你的问题显然,如果在asdf
之前有一些字符不是白色,或者123
之后有一些号码,你是否还想替换123
?
你可以做一些事情,像这样:
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()));
,直到它找到一个组中的equals((.*?=)
),并把它上面将匹配任何东西。然后它将匹配后面的内容并将其放在另一个组中((.*)
)。第一组然后按原样打印,而第二组的内容颠倒。
这样做的一个更简洁但不够灵活的方式是使用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")
我不需要反向..任何字符串都可以在那里 –
@devhedgehog:我已经更新了我的答案。即使您的编辑完全改变了您的问题。 – npinti
'。*?'部分让我害怕大量的任意字串。 '(\ S * =)'可能会更好。 –
string pattern = @"asdf=123";
var result = Regex.Replace(yourString, pattern, "asdf=bbbcccddd");
对于这种方法正则表达式是矫枉过正,只是string.Replace就足够了https://msdn.microsoft.com/en-us/library/fk49wtc1(v=vs.110).aspx –
可能这个链接有帮助吗? :https://msdn.microsoft.com/en-us/library/xwewhkd1(v=vs.110).aspx –
请详细说明。你的字符串/文件中的“asdf = 123”之后/之后是什么?如果它像“asdasd____ asdf = 123 _____ asdasd”那样是一回事,但是如果它是“zzzzzzasdf = 12309656097” - 是不同的。如果你提供这个字符串的缩短例子,那会很好。价值观是固定的?或者这只是你正在寻找的模式的一个例子? – Fabjan