使用文件

时间:2017-05-13 20:12:42

标签: java json regex

我在正则表达式方面并不是很强大,并试图解决一个用手写的解析器问题,我自己的自行车,但由于我无法预测的一些输入失败,问题如下:我有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,将其反序列化为map,对其执行某些操作并再次插入。所以问题是:也许有人已经准备好并且已经证明可以处理这种情况的正则表达式 - 在文本中找到键值json的映射?如果是这样,我会非常感激! 谢谢, 干杯, 安德烈

1 个答案:

答案 0 :(得分:3)

您可以使用此正则表达式查找"key":"value"对:

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

第1组是关键,第2组是值

它还会找到"key": "value""key" :"value""key" : "value"对。

Demo on regexplanet(点击 Java 按钮,然后点击测试按钮)

regex101上的demo

<强>解释

"([^"]+)":捕获任何字符,但双引号之间的双引号(这是

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

\s*:后跟冒号

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

"([^"]+)":捕获任何字符,但双引号之间的双引号(这是