正则表达式替换括号内的内容,除了其中的另一个括号

时间:2016-09-07 15:53:53

标签: regex notepad++ pcre

如何更换支架内的内部除了内部的另一个支架。替换为ZZZZZ

{
 "0000" "1111"
 1111
 { 222 }
 { 333 }
}

将是:

{
 ZZZZZ
 { 222 }
 { 333 }
}

2 个答案:

答案 0 :(得分:0)

这应该是技巧(?<=\{)(.*?)(?=\{)

enter image description here

这将匹配{&amp;之间的所有内容。 {
新的行字符不包含在此正则表达式中。为了使用notepad ++正常工作,复选框&#34;匹配换行符&#34;需要检查查找/替换窗口内的内容。

答案 1 :(得分:0)

({\n\s*)(?:[^}{]*)(\n\s*{)

首先,在捕获组中,(),匹配{,然后是换行符\n,然后是任意数量的空间。

({\n\s*)

接下来,在非捕获组中,匹配任何次数 }{的内容。

(?:[^}{]*)

最后,关闭与我们开始的方式类似:捕获换行符,任意数量的空格以及下一个开放{

(\n\s*{)

这与没有内部括号的内容不匹配,如果内部括号嵌套到3层,它也不会起作用。如果您提供输入的一些示例,我们可以改进匹配(例如使用后面的内容跳过内部匹配)

查看demo at regex101.com