regex - 在 PCRE 正则表达式支持的编辑器中,从代码文件中替换和/或删除特定 JSON 键值字符串的前 n 次出现
问题描述
我有许多 PHP 代码文件,我必须使用支持 PCRE-Regex 的任何文本编辑器从这些 PHP 文件中查找和替换/删除特定的 JSON 键值字符串。
我必须找到并删除的字符串(替换为任何内容,甚至没有空格),它跨越多行(缩进是 2 个空格,但也可能是 4 个空格)看起来像:
{
label: "Other",
value: "Other",
},
如何(n)
在 Sublime Text editor/Notepad++ 中使用 PCRE-regex 删除第一次出现的上述字符串,这样它就不会在文件的其他地方进行任何意外更改?
我在多次出现和贪婪-非贪婪匹配时对正则表达式不太好,所以任何帮助表示赞赏,不过,我确实尝试了这个,但它没有用:
(.*?):\"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},
匹配换行符和},
替换为空字符串
如果Other
可以是其他值,您可以使用
^{\R\h{2,}label:\h+"[^"\\]*(?:\\.[^"\\]*)*",\R\h{2,}value:\h+"[^"\\]*(?:\\.[^"\\]*)*",\R},
推荐阅读
- java - 为 Spring Boot 应用程序捕获堆转储
- java - Webflux 安全登录失败处理程序不起作用
- java - 为什么 TreeSet 在添加新元素之前不比较所有元素?
- mysql - 如何在 Laravel Eloquent 中使用 MIN 和 MAX sql 查询
- java - 使用 Jenkins 运行时无法识别 ole 流错误
- android - 如何打印到热敏蓝牙打印机?
- c# - VB 到 C# 等效的拆分函数
- python - Python - 如何设置法语语言环境?
- java - Spring-JPA - 如何从自联接表中输出有限字段
- mongodb - 无法使用 statefulset 和 sidecar 为 mongodb 创建只读副本