如何在python中实现递归regexp?

2024-10-06 17:25:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我感兴趣的是如何在Python中实现递归regexp匹配(我没有找到任何示例:)。例如,如何编写与“foo(bar(bar(foo)))(foo1)bar1”等“括号平衡”字符串匹配的表达式


Tags: 字符串示例foo表达式bar感兴趣括号regexp
3条回答

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

python有一个替代的regex模块,它确实支持递归模式: https://pypi.python.org/pypi/regex

它在re上有很多更好的改进。

你不能用regexp。Python不支持递归regexp

你可以用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']

相关问题 更多 >