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

dr.reklam

Client
Регистрация
02.06.2020
Сообщения
64
Благодарностей
15
Баллы
8
Здравствуйте. Как через 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
Сообщения
20 316
Благодарностей
9 078
Баллы
113
т.е. вся сложность для меня это как задать в regex указание нескольких символов если они находятся на разных строках. Нужно найти текст от "properties" до
}
]
}
Попробуйте такой вариант регулярки: "properties":\s+\[[\w\W]*?}[\w\W]*?][\w\W]*?}
 
  • Спасибо
Реакции: dr.reklam и Yuriy Zymlex

Yuriy Zymlex

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

dr.reklam

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

dr.reklam

Client
Регистрация
02.06.2020
Сообщения
64
Благодарностей
15
Баллы
8

Yuriy Zymlex

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

Yuriy Zymlex

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

dr.reklam

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

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

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

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