使用 Regex 在 JSON 个对象中查找密码值

Find passwords values in JSON objects using Regex

我有一个很大的 JSON 对象,其中包含很多不同的 JSON,其中大部分具有以下结构(键:sometext-v1.password,值:password 例如:

"apps":[
        "settings": [
                    {
                       "name" : "sometext-v1.password-v1",
                       "value" : "myPassword"
                    },
                    ...
                    ...

我想使用 Regex 通过包含 'password' 字符串及其值的名称提取所有密码,但我不想通过名称迭代 JSON 名称,因为这需要一个很多时间处理。

我试过了,但没用:

String regex = "\"*password*\":\s*\".*?\"";

您可以使用

String regex = "\"name\"\s*:\s*\"[^\"]*password[^\"]*\",\s*\"value\"\s*:\s*\"([^\"]*)";

参见regex demo。详情:

  • "name" - 文字字符串
  • \s*:\s* - : 包含可选的空格
  • " - 一个 " 字符
  • [^"]*password[^"]* - password 包含 0 个或多个字符而不是 "
  • ", - ", 字符串
  • \s* - 零个或多个空格
  • "value" - 文字文本
  • \s*:\s* - : 包含可选的空格
  • " - 一个 " 字符
  • ([^"]*) - 第 1 组:除 ".
  • 之外的任何零个或多个字符

查看 Java 演示:

String s = "\"apps\":[\n        \"settings\": [\n                    {\n                       \"name\" : \"sometext-v1.password-v1\",\n                       \"value\" : \"myPassword\"\n                    },\n                    ...";
String regex = "\"name\"\s*:\s*\"[^\"]*password[^\"]*\",\s*\"value\"\s*:\s*\"([^\"]*)";
Matcher m = Pattern.compile(regex).matcher(s);
if (m.find()) {
    System.out.println(m.group(1));
}
// => myPassword