python中匹配外大括号的正则表达式

2024-04-25 05:51:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些f5配置数据字符串,格式为嵌套大括号,如下所示:

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中执行类似的操作?你知道吗


Tags: 数据字符串http格式contextsomecommon大括号
1条回答
网友
1楼 · 发布于 2024-04-25 05:51:48

您可以使用JS regex。你只需要编辑一下。你知道吗

.+ {[\s\S]*?^}

我用.*替换了profile,这样它不仅匹配profile { ... }。我也让这群人无法捕捉,因为你不在乎花括号里有什么。你只想要整件事。你知道吗

然后您可以调用findall获取您想要的列表:

matches = re.findall(r".+ {(?:[\s\S]*?)^}", test_str, re.MULTILINE)

相关问题 更多 >