首页 > 解决方案 > 在字符串中查找匹配的左/右大括号索引

问题描述

我想在这样的字符串的 for 循环中找到相应大括号的索引,例如:"(foo(bar))".

起初我是这样做的,但它总是匹配最右边/最左边的大括号,因此它不适用于多个大括号:

for item in string:
    if item == "(":
        matchingbraceindex = string.find(")", item)

    elif item == ")":
        matchingbraceindex = string.rfind("(", 0, item)

然后我考虑计算大括号,但我仍然无法获得索引,只是其他大括号中的位置,我想不出从中提取索引的方法。

标签: pythonpython-3.x

解决方案


使用堆栈。推动左括号,直到遇到右括号,此时您找到了最里面的一对。从你的问题中不清楚你在寻找什么输出,所以我不能说如何处理这些字母。


推荐阅读