正则表达式更改大括号之间的字符串

时间:2013-05-28 13:52:03

标签: c# regex

我有一个文件,我想用正则表达式更改其中的文本。

"code": {
  "restore": 1,
  "restore_on_startup": true,
},

我想更改

之间的文字

"code": {

},

我试过像

这样的东西

Regex.Replace(subject, @"?xxx.*?yyy", "Replace");

但由于我的文字包含新行,因此无效。

3 个答案:

答案 0 :(得分:1)

使用

(.|\\r|\\n)*? 

而不是

.*?

或使用RegexOptions类中的multiline属性

答案 1 :(得分:1)

此正则表达式适用于您的示例,它将替换括号内的所有内容

Regex.Replace(subject,"(?<=\"code\":\\s{).*?(?=},)", "replace", RegexOptions.Singleline);

“code”:{   “恢复”:1,   “restore_on_startup”:是的, },

将产生

“code”:{replace},

正则表达式基本上是匹配以"code": {为前缀的所有内容,后缀为},,然后用我的替换替换内部的所有内容。您可能需要调整它以满足您的需求。

答案 2 :(得分:0)

我建议你逐行搜索"code": {

发现,从同一行开始寻找}。 (注意在第一行中关注code部分,因为}之前可能有code

使用List<string> Add存储所有行,直到找到}

之后,将您在单个字符串中找到的所有行连接起来,进行替换。 从文件中删除所有这些行并添加新形成的字符串。