python正则表达式如何对括号进行成对匹配?
时间:2011-07-21
来源:互联网
“
有时我们需要匹配像( 100 * ( 50 + 15 ) )这样的可嵌套的层次性结构,这时简单地使用\(.+\)则只会匹配到最左边的左括号和最右边的右括号之间的内容(这里我们讨论的是贪婪模式,懒惰模式也有下面的问题)。假如原来的字符串里的左括号和右括号出现的次数不相等,比如( 5 / ( 3 + 2 ) ) ),那我们的匹配结果里两者的个数也不会相等。有没有办法在这样的字符串里匹配到最长的,配对的括号之间的内容呢? ”
在.Net Framework的正则表达式中,提供了”平衡组/递归匹配“的处理方法(见《正则表达式30分钟入门教程》)。
在python中,又有什么方法较好的实现这种匹配呢?
有时我们需要匹配像( 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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28