Допустим, у меня есть такой текст:
{
"source": "Analytics 13 {Employee_Info.acl} {Employee_Data}",
"lastRecNo": "3",
"columns": {
"ID": "numeric",
"NAME": "character",
"EFFECTIVE_DATE": "date",
"ROLE": "character"
},
"data": [{
"ID": 1,
"NAME": "Bill Smith",
"EFFECTIVE_DATE": "2018-10-01",
"ROLE": "Director {Regional},{Call Center}"
},
{
"ID": 2,
"NAME": "Ellen Jones",
"EFFECTIVE_DATE": "2018-07-01",
"ROLE": "Manager"
},
{
"ID": 3,
"NAME": "Sam Edwards",
"EFFECTIVE_DATE": "2018-09-01",
"ROLE": "Supervisor"
}]
}
И я хочу, чтобы RegEx соответствовал каждому объекту в массиве "data" (включая фигурные скобки).
Таким образом, первое совпадение будет:
{
"ID": 1,
"NAME": "Bill Smith",
"EFFECTIVE_DATE": "2018-10-01",
"ROLE": "Director {Regional},{Call Center}"
}
, второе будет:
{
"ID": 2,
"NAME": "Ellen Jones",
"EFFECTIVE_DATE": "2018-07-01",
"ROLE": "Manager"
}
, а третье будет
{
"ID": 3,
"NAME": "Sam Edwards",
"EFFECTIVE_DATE": "2018-09-01",
"ROLE": "Supervisor"
}
Какой шаблон регулярного выражения я бы использовал для этого в PowerShell?
Обратите внимание, что в первом совпадении на самом деле есть несколько фигурных скобок в тексте поля «РОЛЬ», которые не должны мешать сопоставлению.
Я уже пробовал это '(?<={).*?(?=})'
, но первое совпадение:
"source": "Analytics 13 {Employee_Info.acl
Этот результат не является частью массива "data" и невключить фигурные скобки в матче.Я знаю, что мне не хватает того, что говорит "убедитесь, что мы находимся внутри массива скобок /" данных ", и я, вероятно, не принимаю во внимание лишние фигурные скобки в поле" ROLE "в первом объекте" данных "массив, который я хочу игнорировать.