我有一个JSON文件,其中包含如下所示的数据:
{ “ID”: “599874c2cc6ffaf42d4c3751”, “idMemberCreator”: “5966727c2d9c33e207a0f5b2”, “数据”:{ “listAfter”:{ “shortLink”: “LubhJK4r”, “idShort”:71, “名称”:“Что забред*!“, “ID”: “59972f276d4e2ed2ad13eab6”, “IDLIST”: “59957b7d842a7cc1c3dfa039”} ...
这包含一定数量的西里尔字母短语,用引号括起来,例如"Что за бред*!"
。这些短语还可能包含数字,空格和标点符号,例如*,.!?
我想创建一个正则表达式来选择除这些短语之外的所有,这样我就可以删除所有元数据并保留俄语短语。短语将以引号开头,后跟数字(例如2017)或大写西里尔字符,并将持续到下一个引号。
我知道如何自己选择短语:
[А-Я0-9][а-яА-Я0-9 *,.!?]+
但是,除了这些短语之外,选择其他所有内容都很复杂,因为文件的其余部分包含数字和逗号。
你能帮我创建我需要的正则表达式吗?
答案 0 :(得分:1)
如果这是一个JSON,你可以遍历它并过滤掉你的正则表达式。
var json = {
"id": "599874c2cc6ffaf42d4c3751",
"idMemberCreator": "5966727c2d9c33e207a0f5b2",
"data": {
"listAfter": {
"shortLink": "LubhJK4r",
"idShort": 71,
"name": "Что на бред*!",
"id": "59972f276d4e2ed2ad13eab6",
"idList": "59957b7d842a7cc1c3dfa039"
}
}
};
function deepJsonFilter(json, pattern) {
return Object.keys(json).reduce((acc, key) => {
if (typeof json[key] === 'object') {
acc[key] = deepJsonFilter(json[key], pattern);
} else if (!pattern.test(json[key])) {
acc[key] = json[key];
}
return acc;
}, {})
}
console.log(deepJsonFilter(json, /[А-Яа-яёЁ]+/));