使用正则表达式在分层字符串中获取多个匹配项



这是我的字符串:

(

(A_1:2,B:3(:2.1,C_3:1.2,(D:3,(E:4.3,F:2(:3.1,(:G:1.7(;

我需要能够捕获任何和所有括号对,例如

(A_1:2,B:3(

(

D:3,(E:4.3,F:2(:3.1,(

这:

([^ ]+)

将捕获整个字符串,但我找不到可以捕获至少 10 个级别的嵌套括号对的组系统组合。

我希望能够将捕获的组放入数据结构中,以便我可以更轻松地解析它。但首先,我需要捕捉这对。

我认为你不需要正则表达式来做这个事件,更难。
这是我想到的:
假设您的目标数据类型是一系列刺痛

def split(data):
    temp = ""
    data = data[1:-2]
    array = []
    closed = opened = 0
    for letter in data:
        if letter == '(':
            opened += 1
        elif letter == ')':
            closed += 1
        if opened != 0:
            temp += letter
            if opened == closed:
                array.append(temp)
                temp = ""
                opened = 0
                closed = 0
    return array
print(split("((A_1:2,B:3):2.1,C_3:1.2,(D:3,(E:4.3,F:2):3.1,):G:1.7);"))

你不能用正则表达式匹配来做到这一点。 原因是因为所有匹配的括号字符串的语言都不规则。 看看一些模式匹配和有限自动机的参考书目,你会发现这背后的数学推理。

最新更新