"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)[^{}"]++)+}
这些是我的健康终点 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)[^{}"]++)+}