найти весь элемент JSON с помощью регулярных выражений - PullRequest
0 голосов
/ 11 января 2019

У меня есть JSON ниже

{ "имя": "а", "конфигурация": { "ключ": 1, "значение": "один", "деталь": { "сообщение": "Тестирование"}}}

Мне нужно получить весь элемент конфигурации, равный "config":{"key":1,"value":"one","detail":{"message": "testing"}} с использованием регулярных выражений, я не хочу использовать какой-либо парсер json, конфигурация может содержать любое количество вложенных элементов

Я пытался использовать шаблон регулярных выражений - "config":{.*}, но он выбирается до последнего}, поскольку он жадный

любая помощь очень ценится

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Вы можете использовать это

"config":[\s\S]+?}(?=[,}])}

Здесь [\s\S]+? будет соответствовать (ленивый режим) всему, за чем следует } or ,

Демо

0 голосов
/ 11 января 2019

Хорошо. Мне удалось получить рабочее решение, однако для его завершения потребовалось два регулярных выражения.

Первый шаг, захватить все после "config". Использовать содержимое группы захвата 1:

"config":({.*})

Демо Regex 1

Второй шаг, используйте рекурсивное регулярное выражение для сопоставления со сбалансированными конструкциями, подробнее об этом здесь в «разделе сбалансированных конструкций». Он использует рекурсию, чтобы найти закрывающую фигурную скобку, которая соответствует открывающей фигурной скобке после "config":. Использовать содержимое совпадения 1:

{(?>[^{}]|(?R))*}

Демо Regex 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...