美文网首页
在python中,用正则表达式提取多层括号中最外层括号包含的内容

在python中,用正则表达式提取多层括号中最外层括号包含的内容

作者: PathonDiss | 来源:发表于2019-08-28 18:49 被阅读0次

提取多层括号中最外层括号包含的内容有几种方式,那么用正则表达式该怎么实现呢?

在python中,用正则表达式提取多层括号中最外层括号包含的内容

比如有一个字符串 :

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中还是自己写算法好一点

注:我这有个学习Python基地,里面有很多学习资料,感兴趣的+Q群:895817687

相关文章

网友评论

      本文标题:在python中,用正则表达式提取多层括号中最外层括号包含的内容

      本文链接:https://www.haomeiwen.com/subject/yugmectx.html