正则表达式替换特定模式的值(转义双引号)

时间:2016-03-25 08:51:37

标签: c# regex

我有一个说2000字符的字符串。我想搜索特定模式,然后替换该模式的一部分。

字符串如下:

data = "additional data \"StartDate\":\"20141101\" additonal data  additional data" 

有没有办法更改值20141101与其他值,比如20121212接近startdate。 我面临的问题是双引号接近搜索模式。

2 个答案:

答案 0 :(得分:1)

一些可能的解决方案:

string data = "additional data \"StartDate\":\"20141101\" additonal data  additional data";

我将使用的那个:它使用零宽度断言来“匹配”"StartDate":"和最终"

string data2 = Regex.Replace(data, "(?<=\"StartDate\":\")([0-9]{8})(?=\")", "xxxxxxxx");

“简单”解决方案:它与\"StartDate\":\"20141101\"匹配,并替换为\"StartDate\":\"xxxxxxxx\"

string data3 = Regex.Replace(data, "\"StartDate\":\"[0-9]{8}\"", "\"StartDate\":\"xxxxxxxx\"");

另一种解决方案,基于使用特殊替换器$1$3,它们是在第一个和第三个捕获组中捕获的字符串((...)

string data4 = Regex.Replace(data, "(\"StartDate\":\")([0-9]{8})(\")", "$1xxxxxxxx$3");

答案 1 :(得分:0)

如果值始终为数字:

var data = "additional data \"StartDate\":\"20141101\" additonal data  additional data";
var num = new Regex("StartDate.+?(\\d+)").Match(data).Groups[1].Value;
Console.WriteLine(data.Replace(num, "20121212"));