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

JSON环境中惰性正则表达式匹配异常,如何获取visit为0的id?

解决正则匹配visit值为0的id问题

你的问题出在原正则表达式会跨JSON对象进行匹配,导致错误捕获了不属于目标对象的id。

正确的正则表达式

{"id":"(.*?)",(?:(?!}).)*?"visit":"0"}

为什么原正则会出错?

原正则 {"id":"(.*?)".*?"visit":"0"} 中的 .*? 是非贪婪匹配,但它不会限制在单个JSON对象内部。当第一个对象的visit值为1时,正则会继续向后查找,直到找到第一个"visit":"0"(也就是第三个对象的该字段),这就导致它把第一个对象的id(123)和第三个对象的visit关联起来,错误捕获了123。

修正后的正则逻辑

  • (?:(?!}).)* 是一个负向预查,它会匹配任意字符,但一旦遇到}就停止,这样就确保了我们的匹配范围被限制在单个JSON对象内部。
  • 这样修改后,正则只会在同一个对象中查找id和对应的visit":"0",从而正确捕获到456和789。

额外建议

如果你的场景是处理JSON数据,更推荐使用专门的JSON解析库(比如Python的json模块、JavaScript的JSON.parse等),正则处理JSON容易出现边缘情况(比如字段顺序变化、存在转义字符等),而专业的解析工具会更可靠。

内容的提问来源于stack exchange,提问作者Nabi K.A.Z.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:53:28