如何匹配花括号中的每个值?

时间:2020-08-07 01:47:45

标签: python-3.x regex

我有以下几行,我只想匹配内部花括号中的内容。

对于这3行:

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

输出为:

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

我尝试了以下2种正则表达式测试here,但没有得到我想要的值。

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

在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

我们可以尝试通过以下正则表达式模式使用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', '-']
相关问题