В настоящее время я пытаюсь найти полезное выражение регулярного выражения для вложенной группировки.
Как выглядят мои текущие данные:
bundle=>test,value=>{amount=>0.00,country=>DE,currency=>EUR},humble=>test,card=>{type=>VISA,digits=>16,security=>645},data=>test
Поля очень сильно различаются. Значит, вложенное выражение может иметь одно поле или несколько.
Чего я хочу достичь:
bundle=>test,value.amount=>0.00,value.country=>DE,value.currency=>EUR,humble=>test,card.type=>VISA,card.digits=>16,card.security=>645,data=>test
Мое текущее выражение выглядит так:
,(.*?)\=>{(((.*?)\=>(.*?))(\,|}))
Я хочу все, что находится перед основным значением, например «значение» с выражением ,(.*?)\=>
. Затем я пытаюсь получить значения между скобками {}
с помощью ((.*?)\=>(.*?))
, которые могут заканчиваться запятой (,
) или скобкой (}
).
Проблема в том, что я не могу заставить ее работать для нескольких значений. Например, добавив квантификатор *
на последней закрывающей скобке, но, по моему мнению, он должен работать так. Так что же я делаю в настоящее время неправильно?
Другой вопрос, если возможно заменить текущие группы на первую группу и несколько групп в скобках, упомянутых в верхнем примере «Чего я хочу достичь» ?
Спасибо и наилучшими пожеланиями.