首页 > 解决方案 > 在 PCRE 正则表达式支持的编辑器中,从代码文件中替换和/或删除特定 JSON 键值字符串的前 n 次出现

问题描述

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

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

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

如何(n)在 Sublime Text editor/Notepad++ 中使用 PCRE-regex 删除第一次出现的上述字符串,这样它就不会在文件的其他地方进行任何意外更改?

我在多次出现和贪婪-非贪婪匹配时对正则表达式不太好,所以任何帮助表示赞赏,不过,我确实尝试了这个,但它没有用:

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

标签: regexreplacepcrefind-occurrences

解决方案


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

^{\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},匹配换行符和},

替换为空字符串

正则表达式演示

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

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

正则表达式演示


推荐阅读