0

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

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

我想改变之间的文字

"code": {

},

我尝试了类似的东西

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

但是由于我的文本包含新行,所以它不起作用。

4

3 回答 3

1

采用

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

代替

.*?

或使用 RegexOptions 类中的多行属性

于 2013-05-28T14:01:54.633 回答
1

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

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

“代码”:{“恢复”:1,“restore_on_startup”:真,},

将产生

“代码”:{替换},

正则表达式基本上是说匹配前缀"code": {和后缀的所有内容,},然后用我的replace替换里面的所有内容。您可能需要对其进行调整以满足您的需求。

于 2013-05-28T14:02:19.497 回答
0

我建议您逐行搜索"code": {.

那发现,从同一行开始寻找}. (注意看好第一行的部分,因为前面code可能有a )}code

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

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

于 2013-05-28T13:59:18.233 回答