You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Notepad++正则移除含数组类型Bilderliste的JSON条目

问题分析

你需要匹配JSON数组中所有"Bilderliste"值为数组的对象条目(以便删除),但之前的正则因非贪婪匹配未限制在单个对象内,导致跨对象匹配,同时负向回顾的位置逻辑错误,无法精准定位目标条目。

正确正则方案

要单独匹配每个"Bilderliste"为数组的JSON对象,可使用以下正则:

\{[^{}]*?"Bilderliste":\[[^\]]*\][^{}]*\}

如果要处理条目间的逗号(避免删除后留下多余逗号),可加上可选的前导逗号和空白:

,?\s*\{[^{}]*?"Bilderliste":\[[^\]]*\][^{}]*\}

正则解释

  • ,?:匹配条目前可选的逗号,处理多条目间的分隔
  • \s*:匹配任意空白字符,兼容多行格式化的JSON
  • \{:匹配JSON对象的起始符号
  • [^{}]*?:非贪婪匹配对象内内容,直到找到目标字段"Bilderliste":
  • "Bilderliste":\[[^\]]*\]:精准匹配"Bilderliste"值为数组的情况,\[[^\]]*\]匹配数组内容(适配你的示例场景,若数组有嵌套]需调整)
  • [^{}]*?:匹配对象内剩余内容,直到对象结束
  • \}:匹配JSON对象的结束符号

Notepad++操作步骤

  1. 打开目标JSON文件,按Ctrl+H打开替换窗口
  2. 在「查找模式」中选择「正则表达式」,勾选「匹配新行」(适配多行JSON)
  3. 「查找内容」输入上述正则,「替换为」留空
  4. 点击「全部替换」,即可删除所有"Bilderliste"为数组的条目
  5. 最后检查JSON数组首尾,若有多余逗号(如[,...或...,]),执行两次补充替换:
    • 查找:\[,\s*,替换为\[
    • 查找:\s*,\],替换为\]

示例测试结果

原示例JSON执行替换后,将仅保留"Bilderliste":null的条目:

[{"ItemID":99999,"VariantID":24527,"TechnicalData":null,"Bilderliste":null,"createdAt":"2019-08-30T00:00:00+02:00"}]

如果你的实际需求是保留数组条目、删除null条目,只需将正则改为匹配"Bilderliste":null的对象:

,?\s*\{[^{}]*?"Bilderliste":null[^{}]*\}

执行替换后即可得到你期望的单数组条目结果。

你之前正则的问题

你使用的((\{)(.*?))(?<!Bilderliste\"\:null,)(\"createdAt)(.*?)(\})存在两个核心问题:

  1. .*?非贪婪匹配未限制在单个JSON对象内,会跨对象匹配内容(比如从null条目开头匹配到数组条目结尾)
  2. 负向回顾(?<!Bilderliste\"\:null,)仅检查"createdAt"前的位置,无法确保整个对象内的"Bilderliste"值,逻辑定位错误

内容的提问来源于stack exchange,提问作者user1515730

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:54:56