提取多层括号中最外层括号包含的内容有几种方式,那么用正则表达式该怎么实现呢?
在这里插入图片描述
在python中,用正则表达式提取多层括号中最外层括号包含的内容
比如有一个字符串 :
学习python中有什么不懂的地方,小编这里推荐加小编的python学习群:895,817, 687
有任何不懂的都可以在里面交流,还有很好的视频教程pdf学习资料,大家一起学习交流!

CPU(
.CPU_1(f1), 
.CPU0(t0), 
.CPU1(t1), 
.CPU2(t2), 
.CPU3(t3)
);

我想要提取

.CPU_1(f1), .CPU0(t0), .CPU1(t1), .CPU2(t2), .CPU3(t3)

这些内容,那么如何实现呢?

还有的一种情况是对于

a(bc(d)ef)g(h(i)(j)k)这段字符串要提取出

bc(d)ef 和 h(i)(j)k 两个字串,所以不能用贪婪匹配。

用栈可以实现,但想知道有没有用正则表达式更方便的办法。
问题分析
不规则嵌套结构的分析

最好还是用栈

如果已经确定嵌套的结构

才可以考虑使用正则

先用贪婪取出整体的数据

然后对数据规划出相似的结构

第一个很简单就不用说了

第二个可以写成这样

(?: # 相似结构的分组
 \w* # 括号前可能存在的内容
 \( # 左括号
 [^()]+ # 非括号内容
 \) # 右括号
)+ # 多个相似的结构
\w* # 剩余的没有括号的内容

需要注意的是正则在这样的条件下可用性并不高

因为嵌套结构如果改变了

就得修改或重新编写

唯一能通用的是递归结构(比如回文)

但正则的递归用法也只有PHP等少数语言支持

所以在Python中还是自己写算法好一点

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐