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]
出于交互式解析的目的,给定一个输入字符串,我需要提取从索引 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]