我在正则表达式方面并不是很强大,并试图解决一个用手写的解析器问题,我自己的自行车,但由于我无法预测的一些输入失败,问题如下:我有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的映射?如果是这样,我会非常感激! 谢谢, 干杯, 安德烈
答案 0 :(得分:3)
您可以使用此正则表达式查找"key":"value"
对:
"([^"]+)"\s*:\s*"([^"]+)",?
第1组是关键,第2组是值
它还会找到"key": "value"
,"key" :"value"
或"key" : "value"
对。
Demo on regexplanet(点击 Java 按钮,然后点击测试按钮)
regex101上的demo
<强>解释强>
"([^"]+)"
:捕获任何字符,但双引号之间的双引号(这是键)
\s*?
:后跟零个或多个空格
\s*
:后跟冒号
\s*
:后跟零个或多个空格
"([^"]+)"
:捕获任何字符,但双引号之间的双引号(这是值)