2024-10-06 17:25:43 发布
网友
我感兴趣的是如何在Python中实现递归regexp匹配(我没有找到任何示例:)。例如,如何编写与“foo(bar(bar(foo)))(foo1)bar1”等“括号平衡”字符串匹配的表达式
这是一个古老的问题,但是对于通过搜索来到这里的人来说:
python有一个替代的regex模块,它确实支持递归模式: https://pypi.python.org/pypi/regex
它在re上有很多更好的改进。
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']
这是一个古老的问题,但是对于通过搜索来到这里的人来说:
python有一个替代的regex模块,它确实支持递归模式: https://pypi.python.org/pypi/regex
它在
re
上有很多更好的改进。你不能用regexp。Python不支持递归regexp
你可以用pyparsing
运行它会产生:
相关问题 更多 >
编程相关推荐