Как сопоставить каждое значение в фигурных скобках? - PullRequest
1 голос
/ 07 августа 2020

У меня есть следующие строки, для которых я хочу сопоставить только содержимое внутри фигурных скобок.

Итак, для этих 3 строк:

{ abv:{1} pwr:{1} dft:{1} valUy:{4066792} }
{ wwqe:{0x342} }
{ heew:{ValStr} abgd:{-} }

вывод будет:

1,1,1,4066792
0x342
ValStr,-

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

\{(.*?)\}
(?<=\{).+?(?=\})

Заранее благодарим за любую помощь .

1 Ответ

3 голосов
/ 07 августа 2020

Мы можем попробовать использовать re.findall со следующим шаблоном регулярного выражения:

\{([^{}]+)\}

Это захватит содержимое между фигурными скобками по всему входу. Обратите внимание, что это гарантирует, что мы не будем пытаться сопоставить что-либо, кроме самых внутренних скобок.

inp = """{ abv:{1} pwr:{1} dft:{1} valUy:{4066792} }
{ wwqe:{0x342} }
{ heew:{ValStr} abgd:{-} }"""

matches = re.findall(r'\{([^{}]+)\}', inp)
print(matches)

Это напечатает:

['1', '1', '1', '4066792', '0x342', 'ValStr', '-']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...