Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用正则表达式从文件中提取JSON键值映射_Java_Json_Regex - Fatal编程技术网

Java 使用正则表达式从文件中提取JSON键值映射

Java 使用正则表达式从文件中提取JSON键值映射,java,json,regex,Java,Json,Regex,我对正则表达式不是很在行,我试图用手工编写的解析器解决一个问题,我自己的自行车,它在一些我无法预料的输入上失败了。问题如下:我有JavaScript i18n文件,这些文件连同翻译一起,包含一些可能在文件中某处定义的其他配置内容(这就是为什么手工制作的解析器很难处理这个问题的主要原因),所以文件是这样的: (function() { 'use strict'; //some configuration stuff (some other stuff may be insterte

我对正则表达式不是很在行,我试图用手工编写的解析器解决一个问题,我自己的自行车,它在一些我无法预料的输入上失败了。问题如下:我有JavaScript i18n文件,这些文件连同翻译一起,包含一些可能在文件中某处定义的其他配置内容(这就是为什么手工制作的解析器很难处理这个问题的主要原因),所以文件是这样的:

(function() {
    'use strict';
    //some configuration stuff (some other stuff may be insterted)
    var translations = angular.module('module.translations.languages.enUs', []);

    translations.constant('translationsName', {
     "first_label":"first_label_value",
     "second_label":"second_label_value"
     //etc
});

}());
上面的示例只是一个可能的模板选项,但它们都有一个共同点——翻译标签被定义为键值json,它只是序列化为json的java映射。 我的目标是从文件中只获取这些键值json,将其反序列化为映射,对其执行一些操作并再次插入。因此,问题是:也许有人已经准备好并证明了正则表达式可以处理这种情况-在文本中找到键值json的映射?如果是这样,我将非常感激! 谢谢 干杯
Andrey

您可以使用此regexp查找
“键”:“值”
对:

“([^”]+)”\s*:\s*“([^”]+)”,?

组1是键,组2是值

它还会找到
“键”:“值”
“键”:“值”
“键”:“值”

(单击Java按钮,然后单击Test按钮)

在regex101上也是一个例子

解释

“([^”]+)”
:捕获任何字符,但双引号之间的双引号除外(这是关键)

\s*?
:后跟零个或多个空格

\s*
:后跟冒号

\s*
:后跟零个或多个空格


“([^”]+)”
:捕获除双引号之间的双引号以外的任何字符(这是值)

我有类似的问题。我使用了你的正则表达式,它对我有效。谢谢。太好了!谢谢你的反馈。如果值是数字,因此没有双引号,遇到问题吗?请使用以下正则表达式:
([^]+)“\s*:\s*”([^“]+)”)”)(([^“]+)”\s*:\s*(\d+\.?\d*)))((([^“]+)”\s*:\s*(\w+)
)但这不处理任何重叠,例如,
“列表”:“{\“num\”:“\1\”,
仅返回:
“列表”:“{/code>Hi MetricRat
应回答您的请求。以下是一个示例: