美文网首页
在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