如何在Python中实现recursion正则expression式?

我感兴趣如何可以在Python中实现recursion正则expression式匹配(我还没有find任何示例:()。例如,如何写一个expression式匹配“括号平衡”string像“foo(bar(bar(foo)) )(foo1)BAR1"

你可以使用pyparsing

#!/usr/bin/env python from pyparsing import nestedExpr import sys astring=sys.argv[1] if not astring.startswith('('): astring='('+astring+')' expr = nestedExpr('(', ')') result=expr.parseString(astring).asList()[0] print(result) 

运行它产生:

 % test.py "foo(bar(bar(foo)))(foo1)bar1" ['foo', ['bar', ['bar', ['foo']]], ['foo1'], 'bar1'] 

这是一个古老的问题,但对于通过search来到这里的人来说:

有一个Python替代正则expression式模块,它支持recursion模式: https : //pypi.python.org/pypi/regex

它有很多更好的改进。

你不能用正则expression式来做。 Python不支持recursion正则expression式

不幸的是,我不认为Python的正则expression式支持recursion模式。

你可以用pyparsing来parsing它: http ://pyparsing.wikispaces.com/