我有一些用嵌套花括号格式化的f5 config数据字符串,如下所示:
profiles {
/Common/http { }
/Common/serverssl {
context serverside
}
/Common/tcp { }
SOME_CRED_MGMT.DOMAIN_some_date {
context clientside
}
}
rules {
/Common/X-FORWARDED-FOR
}
snat {
pool SOME_SNAT.POOL
type snat
}
我想从上面的组中获取类似的列表:
some_list = ["profiles{..}", "rules{..}", "snat{..}"]
搜索后,我发现了类似的内容(在JS中):
profiles {([\s\S]*?)^}
(在PCRE中也是如此)
({((?(?={)(?R)|[^}])*)})
但是它们不适用于Python。如何在Python中做类似的事情?
答案 0 :(得分:0)
您可以使用JS正则表达式。您只需要对其进行一点编辑即可。
.+ {[\s\S]*?^}
我将profile
替换为.*
,以便它不仅匹配profile { ... }
。我也使该组不被捕获,因为您不关心花括号内的内容。您只想要整个事情。
然后您可以致电findall
来获取所需的列表:
matches = re.findall(r".+ {(?:[\s\S]*?)^}", test_str, re.MULTILINE)