admin 管理员组文章数量: 1087580
正则表达式匹配括号
匹配对称的括号
Matching Balanced Sets of Parentheses
对称的圆括号、方括号之类的符号匹配起来非常麻烦。在处理配置文件和源代码时,经常需要匹配对称的括号。例如,解析C语言代码时可能需要处理某个函数的所有参数。函数的参数包含在函数名称之后的括号里,而这些参数本身又有可能包含嵌套的函数调用或是算式中的括号。我们先不考虑嵌套的括号,你或许会想到「\bfoo\([^])*\」,但这行不通。
秉承C的光荣传统,我把示范函数命名为foo。表达式中的标记部分是用来捕获参数的。对于foo(2,4.0)和foo(somevar,3.7)之类的参数,这个表达式完全没问题。但是,它也可以匹配foo(bar(somevar),3.7),这可不是我们需要的。所以要用到比「[^)]*」更聪明的办法。
为了匹配括号部分,我们可以尝试下面的这些正则表达式:
1. \(.*\) 括号及括号内部的任何字符。
2. \([^)]*\) 从一个开括号到最近的闭括号。
3. \([^()]*\) 从一个开括号到最近的闭括号,但是不容许其中包含开括号。
图5-1显示了对一行简单代码应用这些表达式的结果。
本文标签: 正则表达式匹配括号
版权声明:本文标题:正则表达式匹配括号 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1700300790a386779.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论