Что-бы одна и та же группа в шаблоне сработала в нескольких местах, должно быть несколько match (что-бы каждое такое место обрабатывалось регуляркой "с нуля", как-бы). <br/> В регулярках есть разные движки, <b>теоретически</b> тут можно было бы запустить рекурсию, или поработать с динамическими данными в lookahead/lookbehind, но в python, как я понял, не так уж много фич поддерживается. <br/> <br/> Решить в каком-то динамическом виде у меня не получилось. В итоге я скопипастил паттерн некого "хвоста" строки, которая начинается со start (четвертый пример таким образом отпадет) <code>(?:,?\s*(?:(\"[^\"]*\")))?</code> по несколько раз и получил нужный результат (т.е. несколько групп будет в рамках одного match, да и количество групп поддерживается не больше количества скопированного шаблона). Попробовал сократить через DEFINE, но он тоже не поддерживается, видимо. Сделать этот "хвост" именованной группой и использовать ее тоже не получится, т.к. содержимое разное. <br/> Убрать всякие запятые из match так, как это происходит со start, тоже не удастся - lookahead в python не поддерживает квантификаторы. <br/> <br/> Как-то так: <a href="https://regex101.com/r/7eVJFt/4" rel="nofollow">https://regex101.com/r/7eVJFt/4</a>