从 PCRE 正则表达式支持的编辑器中的代码文件中替换和/或删除特定 JSON 键值字符串的前 n 个匹配项

问题描述

正如我在问题标题中提到的,我有许多 PHP 代码文件,我必须在其中使用支持 PCRE-Regex 的任何文本编辑器从这些 PHP 文件中查找和替换/删除特定的 JSON 键值字符串。

我必须找到并删除的字符串(什么都不替换,甚至没有空格),跨越多行(缩进是 2 个空格,但也可能是 4 个空格)看起来像:

@H_502_5@{
  label: "Other",value: "Other",},

如何在 Sublime Text 编辑器/记事本 ++ 中使用 PCRE-regex 删除上述字符串的第一个 @H_502_5@(n) 匹配项,以便它不会在文件的其他地方进行任何意外更改?

我对多次出现和贪婪非贪婪匹配的 Regex 不太擅长,因此感谢任何帮助,不过,我确实尝试过这个,但没有用:

@H_502_5@(.*?):\"Other\",

解决方法

对于示例数据,您可以使用

^{\R\h{2,}label:\h+"Other",\R\h{2,}value:\h+"Other",\R},
  • ^{ 字符串开始并匹配 {
  • \R\h{2,} 匹配换行符、2 个或多个水平空白字符
  • label:\h+"Other", 匹配 label: 1+ 个水平空白字符和 "Other,"
  • \R\h{2,} 匹配一个换行符和 2 个水平空白字符
  • value:\h+"Other",
  • \R}, 匹配换行符和 },

用空字符串替换

Regex demo

如果 Other 可以是其他值,您可以使用

^{\R\h{2,}label:\h+"[^"\\]*(?:\\.[^"\\]*)*",}value:\h+"[^"\\]*(?:\\.[^"\\]*)*",

Regex demo