我有一个说2000字符的字符串。我想搜索特定模式,然后替换该模式的一部分。
字符串如下:
data = "additional data \"StartDate\":\"20141101\" additonal data additional data"
有没有办法更改值20141101与其他值,比如20121212接近startdate。 我面临的问题是双引号接近搜索模式。
答案 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"));