为了交互式解析,给定一个输入字符串,我需要提取从索引0开始并且只有匹配括号的最长子字符串。
示例(类似LISP的s表达式)
输入字符串:(print "hello") (assign a (+ c d)) (assign e (+ f g)
输出子字符串:(print "hello") (assign a (+ c d))
我想制作一个简单的Python函数来实现这一目标。
答案 0 :(得分:1)
在计算括号时循环遍历字符串,最后只是将字符串切片到括号计数器为0的最后一个索引:
def max_parseable_substring(text):
parentheses = 0
end = 0
for i, char in enumerate(text):
if char == "(":
parentheses += 1
elif char == ")":
parentheses -= 1
if parentheses == 0:
end = i
return text[:end]