+ -
当前位置:首页 → 问答吧 → python正则表达式如何对括号进行成对匹配?

python正则表达式如何对括号进行成对匹配?

时间:2011-07-21

来源:互联网


有时我们需要匹配像( 100 * ( 50 + 15 ) )这样的可嵌套的层次性结构,这时简单地使用\(.+\)则只会匹配到最左边的左括号和最右边的右括号之间的内容(这里我们讨论的是贪婪模式,懒惰模式也有下面的问题)。假如原来的字符串里的左括号和右括号出现的次数不相等,比如( 5 / ( 3 + 2 ) ) ),那我们的匹配结果里两者的个数也不会相等。有没有办法在这样的字符串里匹配到最长的,配对的括号之间的内容呢? ”


在.Net Framework的正则表达式中,提供了”平衡组/递归匹配“的处理方法(见《正则表达式30分钟入门教程》)。

在python中,又有什么方法较好的实现这种匹配呢?

作者: doubleyang   发布时间: 2011-07-21

这已经不是正则表达式了,是context free grammar。你可以自己写一个parser,或者用PLY之类的工具生成一个parser。

作者: panghuhu250   发布时间: 2011-07-21

建议读一下“Python正则表达式操作指南”http://www.cnblogs.com/babykick/archive/2011/03/30/1999428.html

作者: oatnehc   发布时间: 2011-07-21

正则表达式没法完成,写个递归函数从最外面,到最里面,直到找不到'('为止。

作者: yaoxinyong   发布时间: 2011-07-21