Я реализую какой-то парсер, и мне нужно найти и десериализовать объект json , встроенный в другие полуструктурированные данные. Я использовал регулярное выражение:Regex для соответствия вложенным объектам json
\\{\\s*title.*?\\}
найти объект
{title:'Title'}
, но он не работает с вложенными объектами, потому что выражение соответствует только первым нашел закрывающую скобку. Для
{title:'Title',{data:'Data'}}
он соответствует
{title:'Title',{data:'Data'}
так строка становится недействительной для десериализации. Я понимаю, что есть жадный бизнес, но я не знаком с регулярными выражениями. Не могли бы вы помочь мне расширить выражение, чтобы использовать все доступные закрывающие фигурные скобки.
Update:
Чтобы было ясно, что это попытка извлечь данные в формате JSON из слабоструктурированных данных, таких как HTML + JS с вложенным JSON. Я использую GSon JAVA lib для фактического анализа извлеченного JSON.
Остерегайтесь «OMG, не используйте Regex, это eevil!» – SmokeyPHP
.. но со всей серьезностью - почему? Каковы данные, которые вам нужны, и что вам нужно для достижения этого? – SmokeyPHP
@ViktorStolbin Есть готовые аналитические библиотеки JSON. Кроме того, поскольку JSON не является обычным языком, он не может быть правильно разобран регулярными выражениями (точно так же, как HTML). –