-1

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

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

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

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

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

4

1 回答 1

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]
于 2018-04-07T16:39:28.777 回答