使用regex在json对象中查找密码值

eqzww0vc  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(293)

前几天我还在努力工作,我有一个很大的json对象,它包含了很多不同的json,大多数都有下面的结构(key:sometext-v1.password,value:password)

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

我想使用regex来提取所有密码的名称包含'密码'字符串及其值,但我不想迭代的json名称的名称,因为这需要大量的时间来处理。我试过了,但没用

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

提前谢谢你

jgzswidk

jgzswidk1#

你可以用

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

查看regex演示。细节: "name" -文字字符串 \s*:\s* -a : 用可选空格括起来 " -a " 烧焦 [^"]*password[^"]* - password 包含0个或多个字符,而不是
" ", -a ", 一串 \s* -零个或多个空格 "value" -文字 \s*:\s* -a : 用可选空格括起来 " -a " 烧焦 ([^"]*) -第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

相关问题