Padrão recursivo em regex

Isso está muito relacionado aExpressão regular para combinar colchetes externos no entanto, quero especificamente saber como ou se é possível fazer issopadrão recursivo de regex? Ainda estou para encontrar um exemplo de python usando essa estratégia, então pense que isso deve ser uma pergunta útil!

Eu tenhovisto alguns reivindicações este padrões recursivos podem ser usados para combinar parênteses balanceados, mas nenhum exemplo usando o comando pythonregex pacote (Nota: renão suporte padrão recursivo, você precisa usar regex).

1afirmação é que a sintaxe éb(?:m|(?R))*e Onde:

b é o que começa a construção,m é o que pode ocorrer no meio da construção ee é o que pode ocorrer no final da construção

Eu quero extrair correspondências para oexterior chaves no seguinte:

"{1, {2, 3}} {4, 5}"
["1, {2, 3}", "4, 5"]  # desired

Observe que é fácil fazer o mesmo parainterior suspensórios:

re.findall(r"{([^{}]*)}", "{1, {2, 3}} {4, 5}")
['2, 3', '4, 5']

(No meu exemplo, eu estava usando o finditer (sobre objetos de correspondência), consulteaqui.)

Então, eu esperava que o seguinte, ou alguma variação, funcionasse:

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}} {4, 5}")
regex.findall(r"({(:.*)|(?R)*})", "{1, {2, 3}} {4, 5}")
regex.findall(r"({(:[^{}])|(?R)})", "{1, {2, 3}} {4, 5}")

mas sou atropelado por [] ouerror: too much backtracking.

É possível extrair objetos de correspondência para o parêntese externo usando a recursão do regex?

Obviamente, corro o risco de ser abatido com:

não analise html com regexfaça isso com pyparseescreva um lexer e analisador adequado, p. usando dobras

Quero enfatizar que isso é sobrecomo usar o padrão recursivo (que, se meu entendimento estiver correto, nos levará para fora da análise de linguagem regular, portanto, pode ser realmente possível!). Se isso puder ser feito, deve ser uma solução mais limpa.

questionAnswers(2)

yourAnswerToTheQuestion