这与正则expression式非常相关, 以匹配外括号,但是,我特别想知道如何或是否有可能做这个正则expression式的recursion模式 ? 我还没有find一个使用这个策略的Python例子,所以认为这应该是一个有用的问题! 我见过 一些 说recursion模式可以用来匹配平衡括号,但没有使用Python的正则expression式包的例子(注:re 不支持recursion模式,你需要使用正则expression式)。 一种说法是语法是b(?:m|(?R))*e其中: b是什么开始的构造, m是什么可以发生在构造的中间, e是什么可以发生在结构的末尾 我想在下面提取外括号的匹配: "{1, {2, 3}} {4, 5}" ["1, {2, 3}", "4, 5"] # desired 请注意,对于内支架,这很容易实现: re.findall(r"{([^{}]*)}", "{1, {2, 3}} {4, 5}") ['2, 3', '4, 5'] (在我的例子中,我使用的是finditer(通过匹配对象),请看这里 。) 所以我希望以下或者其他的一些变化可以起作用: regex.findall(r"{(:[^{}]*|?R)}", "{1, {2, 3}} {4, 5}") regex.findall(r"({(:[^{}]*|?R)})", "{1, {2, 3}} {4, 5}") regex.findall(r"({(:.*|(?R))*})", "{1, {2, 3}} […]
我似乎记得DotNet中的正则expression式有一个特殊的机制,它允许嵌套结构的正确匹配,比如“ ( (a ( ( c ) b ) ) ( d ) e ) ”中的分组。 什么是这个function的Python等值? 这可以通过使用正则expression式来解决吗? (虽然似乎是当前正则expression式的实现不是为了devise的问题)