使用 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
我有一个很大的 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