可能的重复:
用 Python 中的正则表达式匹配嵌套结构
我无法解决这个问题。我有一个类似于以下的字符串:
Lorem ipsum dolor sit amet [@a xxx yyy [@b xxx yyy [@c xxx yyy]]] lorem ipsum sit amet
我的任务是提取命令(它们总是以[@开头并以]结尾)及其子命令。结果像
[
[@a xxx yyy [@b xxx yyy [@c xxx yyy]]], # the most outer
[@b xxx yyy [@c xxx yyy]], # the middle one
[@c xxx yyy] # the inner most
]
将不胜感激。问题是这类命令可能出现在很长的文本消息中,因此“高性能”解决方案会很好。
我大部分时间都在玩弄一些正则表达式模式,比如
(\[@.*?\]\s) # for the outer one
但我没有看到匹配中间和内部的光线。为了使它更复杂,嵌套命令的数量是可变的......可能一些特殊的正则表达式是解决方案吗?我已经阅读了前瞻和后瞻,但不知道如何在这种特殊情况下使用它们。
谢谢一堆!
更新
@Cyborgx37 将我指向另一个使用 pyparsing 包的帖子。有一个没有外部包或库的解决方案会很好。但是 pyparsing 绝对可以解决这个问题!