У меня есть следующая строка:
r"(A1,B1,C1,D1),(A2,B2,C2,D2),..."
, и я хочу извлечь список кортежей
[(A1,B1,C1,D1),(A2,B2,C2,D2),...]
A
, B
и D
- целые числа, а C
- строка, заключенная в одинарные кавычки.Сложная часть определяется тем, что C
может содержать любой символ, включая экранированные одинарные кавычки (\'
), запятые (,
), экранированные обратные косые черты (\\
) и целые числа.Я пытаюсь решить эту проблему с помощью регулярных выражений, но я не могу понять, как это сделать.
До сих пор я пытался сопоставить конец строки, посмотрев на первую одиночную кавычку, котораяпредшествует четное количество обратных слешей (0, 2, 4, ...), но я не могу заставить его работать.Есть идеи?
Ожидаемые результаты:
r"(21,3,'abc\',57',1993)"
-> (21,3,'abc\',57',1993)
r"(21,3,'abc\\',1993)"
-> (21,3,'abc\\',1993)
r"(21,3,'abc\\\\\',57\\\\',1993)"
-> (21,3,'abc\\\\\',57\\\\',1993)