По причинам, выходящим за рамки этого, я создаю простой bibtex-парсер. Некоторые поля bibtex ограничены одной фигурной скобкой, а другие - двойными фигурными скобками. Фигурные скобки также являются допустимым содержимым поля.
У меня есть строка, которая, как мне известно, соответствует одному полю в следующих форматах:
fieldName1 = {{ content }},\n -> content
fieldName2 = { content },\n -> content
fieldName3 = { {[}content,] },\n -> {[}content,]
С помощью этого шаблона я могу восстановить содержимое:
re.compile(r"(?P<name>[\w-]+?)[\s]*=[\s]*({(?P<content>.*)})", flags=re.IGNORECASE|re.DOTALL)
Но он будет содержать {и}, если в этом поле используются двойные скобки.
Есть ли более простой способ удалить их, чем тестировать [0] == '{' and [-1] == '}'