Python - 只有匹配括号的最长子串

Python - Longest substring having only matched parentheses

出于交互式解析的目的,给定一个输入字符串,我需要提取从索引 0 开始且仅匹配括号的最长可能子字符串。

示例(类似 LISP 的 s 表达式)

输入字符串:(print "hello") (assign a (+ c d)) (assign e (+ f g)

输出子字符串:(print "hello") (assign a (+ c d))

我想做一个简单的Python函数来实现这个。

在计算括号的同时循环遍历字符串,最后将字符串切片到括号计数器为 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]