我有以下正则表达式来获取所有带有secure前缀的值:

"secure[^:]+:\s*"[^"]+"

它适用于以下字符串:
Parameters: {"client_id":"6dd930eb-e4dc-48d9-a18b-ace0c7406dc8","secure_client_secret":"fedfc0a7-af1e-413c-ab51-1955113b2123"}

但不适用于以下字符串:
"Parameters: {\"client_id\":\"6dd930eb-e4dc-48d9-a18b-ace0c7406dc8\",\"secure_client_secret\":\"fedfc0a7-af1e-413c-ab51-1955113b2123\"}"

如何更新此设置以在两种情况下均可使用?
这是ruular的链接:https://rubular.com/r/ZA0ioy8mHXOghq

最佳答案

您可以使用捕获用途和反向引用来匹配"\"包装的值:

(\\"|")secure[^:]+:\s*\1.*?\1

Updated RegEx Demo

但是请注意,如果您的平台/工具允许,则使用适当的JSON解析器来解析这样的JSON字符串。

关于regex - 重写正则表达式以支持两种情况,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58820378/

10-10 18:48