Помощь с Regex (регулярные выражения)

dr.reklam

Client
Регистрация
02.06.2020
Сообщения
71
Благодарностей
29
Баллы
18
Здравствуйте. Как через regex достать данные находящиеся между определенными символами, которые на разных строках.

Например, нужно из вот этого
JavaScript:
{
  "items": [
    {
      "properties": [
        {
          "catalogItemType": "API",
          "catalogItemTypeId": 105,
          "values": [
            "GL-4"
          ]
        },
        {
          "catalogItemType": "Вязкость",
          "catalogItemTypeId": 102,
          "values": [
            "75W-90"
          ]
        }
      ],
      "catalogItemId": 1695,
      "volume": "",
      "name": "Масло трансмиссионное",
      "comment": "Спецификация масла ступенчатой коробки передач"
    },
    {
      "properties": [
        {
          "catalogItemType": "Спецификация FMVSS 116",
          "catalogItemTypeId": 185,
          "values": [
            "DOT 3",
            "DOT 4"
          ]
        }
      ],
      "catalogItemId": 1387,
      "volume": "",
      "name": "Тормозная жидкость"
    }
  ]
}
Получить это:
JavaScript:
"properties": [
        {
          "catalogItemType": "Спецификация FMVSS 116",
          "catalogItemTypeId": 185,
          "values": [
            "DOT 3",
            "DOT 4"
          ]
        }
      ],
      "catalogItemId": 1387,
      "volume": "",
      "name": "Тормозная жидкость"
    }
  ]
}

т.е. вся сложность для меня это как задать в regex указание нескольких символов если они находятся на разных строках. Нужно найти текст от "properties" до
}
]
}
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
21 152
Благодарностей
9 408
Баллы
113
т.е. вся сложность для меня это как задать в regex указание нескольких символов если они находятся на разных строках. Нужно найти текст от "properties" до
}
]
}
Попробуйте такой вариант регулярки: "properties":\s+\[[\w\W]*?}[\w\W]*?][\w\W]*?}
 
  • Спасибо
Реакции: dr.reklam и Yuriy Zymlex

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 580
Благодарностей
3 400
Баллы
113

dr.reklam

Client
Регистрация
02.06.2020
Сообщения
71
Благодарностей
29
Баллы
18
Попробуйте такой вариант регулярки: "properties":\s+\[[\w\W]*?}[\w\W]*?][\w\W]*?}
Для конкретно этого примера работает, но если исходный текст другой то собирает не корректно. Пробовал разные комбинации, немного не то.
 

dr.reklam

Client
Регистрация
02.06.2020
Сообщения
71
Благодарностей
29
Баллы
18

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 580
Благодарностей
3 400
Баллы
113

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 580
Благодарностей
3 400
Баллы
113
  • Спасибо
Реакции: dr.reklam

dr.reklam

Client
Регистрация
02.06.2020
Сообщения
71
Благодарностей
29
Баллы
18
Всё прекрасно парсится:

Посмотреть вложение 90313

{-Json.items[0].properties[0].catalogItemType-}
Зная Count, можно в цикле перебирать значения.
В конструкторе не получалось, а через кубик Данные->Обработка JSON/XML все получилось, и данные отобразились в переменных Json
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)