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

求助:为JSON中data字段下的日期生成匹配正则表达式

解决JSON中仅匹配"data"字段日期并排除"not"字段的正则问题

问题分析

你当前使用的正则(?>data)*([0-9\-ZT:]{5,25}Z)存在两个核心问题:

  • 仅模糊关联"data"关键词,未限定匹配范围是在"data"字段对应的数组内部,会误匹配"not"字段里的日期
  • 日期匹配规则过于宽泛,[0-9\-ZT:]{5,25}Z可能捕获到非标准日期的无效字符串

解决方案

以下正则可以精准匹配"data"数组内的所有ISO格式日期,同时完全排除"not"字段下的日期:

(?<=("data":\[|\G)(?:[^"]*?"[^"]*?",?\s*)*")([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z)(?="(?:,?\s*(?!"not":))*?\])

正则逻辑解释

  1. 前置定位:(?<=("data":\[|\G)(?:[^"]*?"[^"]*?",?\s*)*")
    • 确保匹配位置要么是"data":["的起始位置,要么是上一个日期匹配的结尾(\G),严格限定在"data"数组的范围内
  2. 日期捕获:([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z)
    • 精确匹配标准ISO 8601格式的日期字符串,避免无效匹配
  3. 后置排除:(?="(?:,?\s*(?!"not":))*?\])
    • 断言后续内容直到数组闭合]前,不会出现"not":字段,彻底排除"not"数组内的日期

注意事项

  • 该正则基于你提供的JSON结构编写,若后续JSON格式发生变化(比如"data"数组后不是直接跟{"not"),需要调整后置断言部分
  • 从严谨性来说,正则并非处理JSON的最优方案,优先推荐使用JSON解析工具提取字段;但针对性能脚本生成的场景,此正则可以满足需求

内容的提问来源于stack exchange,提问作者Анастасия Давыденко

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:43:18