Expressão regular para corresponder à lista separada por vírgulas de key = value em que value pode conter vírgulas

Eu tenho um "analisador" ingênuo que simplesmente faz algo como:
[x.split('=') for x in mystring.split(',')]

No entanto mystring pode ser algo como
'foo=bar,breakfast=spam,eggs'

Obviamente,
O divisor ingênuo simplesmente não fará isso. Estou limitado aBiblioteca padrão do Python 2.6 por esta,
Então, por exemplopyparsing não pode ser usado.

A saída esperada é
[('foo', 'bar'), ('breakfast', 'spam,eggs')]

Eu estou tentando fazer isso com regex, mas estou enfrentando os seguintes problemas:

Minha primeira tentativa
r'([a-z_]+)=(.+),?'
Deu-me
[('foo', 'bar,breakfast=spam,eggs')]

Obviamente,
Fazer.+ não-ganancioso não resolve o problema.

Assim,
Eu estou supondo que eu tenho que de alguma forma fazer a última vírgula (ou$) obrigatório.
Fazer exatamente isso não funciona
r'([a-z_]+)=(.+?)(?:,|$)'
Como com isso, o material por trás da vírgula em um valor contendo um é omitido,
por exemplo.[('foo', 'bar'), ('breakfast', 'spam')]

Eu acho que devo usar algum tipo de operação de look-behind (?).
As questões)
1Qual eu uso? ou
2Como eu faço isso / isso?

Editar:

Baseado emdaramarakresposta abaixo,
Acabei fazendo praticamente a mesma coisa queabarcar mais tardesugerido em uma forma ligeiramente mais detalhada;

vals = [x.rsplit(',', 1) for x in (data.split('='))]
ret = list()
while vals:
    value = vals.pop()[0]
    key = vals[-1].pop()
    ret.append((key, value))
    if len(vals[-1]) == 0:
        break

EDIT 2:

Apenas para satisfazer a minha curiosidade, isso é realmente possível compuro expressões regulares? Ou seja, quere.findall() retornaria uma lista de 2-tuplas?

questionAnswers(5)

yourAnswerToTheQuestion