"status" 之后的 PCRE RegEx 不同于 "OK"

PCRE RegEx when after "status" something different than "OK"

这些是我的健康终点 JSON:

{
  "JMS Server": {
    "message": "Successfully connected to JMS Server",
    "status": "OK"
  },
  "Database": {
    "message": "Database was successfully reached in 1ms",
    "status": "OK"
  },
  "Application": {
    "message": "IO Error Connection refused (Connection refused)",
    "status": "CRITICAL",
    "info": "URL = http://localhost/testing/healthcheck"
  }
}

{
  "JMS Server": {
    "message": "Successfully connected to JMS Server",
    "status": "OK"
  },
  "Database": {
    "message": "JDBC Connection failure",
    "status": "CRITICAL",
    "info": "No operations allowed after connection closed."
  },
  "Application": {
    "message": "Application is up",
    "status": "OK",
    "info": "Application name = Testing"
  }
}

当 "status" 与 "OK" 不同时,我需要一个 PCRE RegEx。 我不确定总是写 "CRITICAL".

我用 DuckDuckGo 搜索 not 运算符,但它从来没有用过 Regexr

@Jan 参数有效。 JSON 不应使用正则表达式进行解析。但是如果我们不得不处理更复杂的语法(不完全相同,更多的内部对象,数组,不同的标量类型等)和包含字符的更多域,我们可能会认为这个要求是一个例外。

如果您确定所有这些先决条件,那么以下正则表达式将匹配满足您要求的 key/value 对:

(?m)^[^{}]*{\s*(?>"(?!status": "OK)[^{}"]++)+}

参见 live demo here