【问题标题】:Find passwords values in JSON objects using Regex使用 Regex 在 JSON 对象中查找密码值
【发布时间】:2021-03-02 19:59:34
【问题描述】:

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

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

我想使用 Regex 提取包含“密码”字符串及其值的名称的所有密码,但我不想按名称迭代 JSON 名称,因为这需要大量时间来处理。

我试过了,但它不起作用:

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

【问题讨论】:

  • 您需要检查 name 值中的password,然后获取value 值。使用String regex = "\"name\"\\s*:\\s*\"[^\"]*password[^\"]*\",\\s*\"value\"\\s*:\\s*\"([^\"]*)";,见demo
  • 为什么不呢? Looks working to me。你确定你有你分享的字符串吗?
  • 好的,非常感谢,转换成java字符串后就可以了

标签: java arrays json regex passwords


【解决方案1】:

你可以使用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 2020-11-05
    • 2020-04-19
    • 1970-01-01
    • 2020-07-22
    • 2019-02-01
    相关资源
    最近更新 更多