Как отмечается в комментарии, самое лучшее, что можно сделать здесь, это использовать инструмент, который анализирует JSON. Это позволит вам лучше контролировать данные, так как они со временем меняются. Если при анализе JSON возникла проблема, возможно, это лучшее место для сосредоточения усилий.
Я хотел бы отметить, что вы, кажется, не соответствует литералу []
, и поэтому может показаться, что ваше совпадение может потенциально совпадать с аналогичными значениями в первом разделе, где у вас в данный момент есть * 1004. *, так что будьте осторожны при очистке данных.
Есть два способа добавления в скобках. Вы можете либо продолжать делать то, что делаете в настоящее время, пытаясь придумать все, что вы можете разрешить в этой строке, и поэтому вы просто добавите дополнительные символы при их обнаружении. Таким образом, это решение будет работать:
(?'Response'{\s*("([\w]+)"\s*:\s*"?((?'Message'[\s\w\d\.\\\-\/:;_'\(\)]+(,[,\s\w\d\.\\\-\/:_]+)?)+)"\s*,*\s*)+})
Демонстрируется на https://regex101.com/r/xqP8BF/1
Однако вам может быть проще просто исключить все, что вы не хотите сопоставлять, в частности, "
:
(?'Response'{\s*("([\w]+)"\s*:\s*"?("(?'Message'[^"]*)")\s*,*\s*)+})
Здесь продемонстрировано: https://regex101.com/r/pyaMaD/1
Этот более поздний пример намного проще. Конечно, когда вы закончите, очистите данные. Кроме того, в зависимости от данных, которые вы получаете, вам может потребоваться учитывать сбежавшие "
, но я считаю, что вам придется делать это даже с другим регулярным выражением.