Python 正则表达式和有限深度非转义括号匹配

Python 正则表达式和有限深度非转义括号匹配,python,regex,Python,Regex,我想匹配不超过给定深度的嵌套匹配括号的各种组合 如果深度为2,则以下内容应匹配 H<> H<a> H<<a><b>> H<a<b>c<d>> H H H H 这些不应: H<<<>>> H<<<>><<><>><>> H H 我想我会做一个函数来生成正则表达式 INNER =

我想匹配不超过给定深度的嵌套匹配括号的各种组合

如果深度为2,则以下内容应匹配

H<>
H<a>
H<<a><b>>
H<a<b>c<d>>
H
H
H
H
这些不应:

H<<<>>>
H<<<>><<><>><>>
H
H
我想我会做一个函数来生成正则表达式

INNER = r"[^<>]"
OPEN  = r"<"
CLOSE = r">"

def parenthesis(depth=2):
    if depth == 0:
        return INNER
    inner = "("
    for i in range(depth):
        inner += parenthesis(i) + "|"
    inner = inner[:-1]+")*?"
    return "("+OPEN + inner + CLOSE+")"
internal=r“[^]”
打开=r“”
def括号(深度=2):
如果深度=0:
返回内部
内部=“(”
对于范围内的i(深度):
内+=括号(i)+“|”
内部=内部[:-1]+“”*?”
返回“(“+打开+内部+关闭+”)
如果我这样做,这似乎是可行的(尽管我不是完全有信心),例如:

re.match("H"+parentthesis(2), "H<<>>")
re.match(“H”+父命题(2),“H”)
但我真的想匹配没有逃逸的花括号。因此:

OPEN = r"(?<!\\)[\{]"
CLOSE = r"(?<!\\)[\}]"
OPEN=r”(?试试这个:

INNER = r"(?:\\{|\\}|[^{}])"
它表示转义大括号,或不是大括号的字符

INNER = r"(?:\\{|\\}|[^{}])"