java - 使用 Regex 在 JSON 对象中查找密码值
问题描述
我有一个大的 JSON 对象,其中包含许多不同的 JSON,其中大多数具有以下结构(键:sometext-v1.password,值:密码,例如:
"apps":[
"settings": [
{
"name" : "sometext-v1.password-v1",
"value" : "myPassword"
},
...
...
我想使用正则表达式通过包含“密码”字符串及其值的名称提取所有密码,但我不想按名称迭代 JSON 名称,因为这需要大量时间来处理。
我试过这个,但它不工作:
String regex = "\"*password*\":\\s*\".*?\"";
解决方案
您可以使用
String regex = "\"name\"\\s*:\\s*\"[^\"]*password[^\"]*\",\\s*\"value\"\\s*:\\s*\"([^\"]*)";
请参阅正则表达式演示。细节:
"name"
- 文字字符串\s*:\s*
-:
用可选空格括起来"
- 一个"
字符[^"]*password[^"]*
-password
包含 0 个或多个字符,而不是 a"
",
- 一个",
字符串\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
推荐阅读
- java - Set.of() 在 Intellij 中无法识别,但在 Android Studio 中无法识别
- python - 如何将 python 版本从 3.8 降级到 3.7 (mac)
- java - org.springframework.beans.factory.BeanCreationException:创建名为“projectTaskRepository”的bean时出错
- python - Python mypy 静态类型:仅接受 Dict(带键 str)、Lists(但不包括自定义类)和嵌套 Dicts 和 Lists 的参数
- gunicorn - 在 ubuntu 服务器上使用 uvicorn 运行 fastapi 应用程序
- php - 将数组传递给 Vue JS
- c - SDL2 > PNG IMAGE > 无法加载图像
- bash - 在 for 循环 bash 中使用 yq
- node.js - 如何在不使用 OFFSET 的情况下从特定文档编号开始 Firestore 查询?
- c++ - 如何找到锁定 Linux futex 的 C++ 行?