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

Python中使用负向正则匹配不含指定子串的JSON字符串问题

问题排查与解决方案

原有正则的错误点

你使用的((?!key).).*仅校验了字符串第一个字符的位置后续不会直接出现key子串,后面的.*会无条件匹配剩余所有内容,不会再做任何负向逻辑校验。
以你提供的含key的JSON为例:字符串开头是{,该位置往后的字符串起始为"ke,并不满足key的前缀规则,因此第一个字符匹配通过,后续所有内容直接被.*匹配,最终导致不符合要求的字符串也被命中。

符合要求的正则写法

你需要在字符串起始位置做全局负向校验,确保整个字符串任意位置都不存在key子串,结合re.match默认从字符串开头匹配的特性,正则可写为:
(?!.*key).*

如果需要严格匹配完整字符串,避免出现部分匹配的异常情况,可以补充结束锚定:
(?!.*key).*$

匹配效果验证

  • 测试串{"key": "success", "name": "peter"}:起始位置的负向断言检测到字符串内存在key子串,断言失败,不会被匹配
  • 测试串{"name": "sam"}:起始位置的负向断言未检测到key子串,全字符串匹配成功,符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 16:36:04