【发布时间】:2011-05-16 03:51:02
【问题描述】:
显然这个问题在阅读后经常出现
Regular expression to detect semi-colon terminated C++ for & while loops
想了想这个问题,我写了一个函数来返回包含在任意数量的nested()里面的内容
该函数可以很容易地扩展到任何正则表达式对象,在这里发布您的想法和考虑。
任何重构建议将不胜感激
(注意,我还是 python 新手,不想弄清楚如何引发异常或其他什么,所以如果函数无法弄清楚发生了什么,我只是让函数返回“失败” )
考虑到 cmets 的编辑函数:
def ParseNestedParen(string, level):
"""
Return string contained in nested (), indexing i = level
"""
CountLeft = len(re.findall("\(", string))
CountRight = len(re.findall("\)", string))
if CountLeft == CountRight:
LeftRightIndex = [x for x in zip(
[Left.start()+1 for Left in re.finditer('\(', string)],
reversed([Right.start() for Right in re.finditer('\)', string)]))]
elif CountLeft > CountRight:
return ParseNestedParen(string + ')', level)
elif CountLeft < CountRight:
return ParseNestedParen('(' + string, level)
return string[LeftRightIndex[level][0]:LeftRightIndex[level][1]]
【问题讨论】:
标签: python parsing parentheses