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