A expressão regular do Python (regex) corresponde ao número separado por vírgula - por que isso não funciona?

Estou tentando analisar cartas de transação do meu banco (alemão). Eu gostaria de extrair todos os números da seguinte string, que é mais difícil do que eu pensava. Opção 2 faz quase o que eu quero. Agora quero modificá-lo para capturar, e. 80 também.

Minha primeira tentativa é a opção 1, que só retorna lixo. Por que está retornando tantas cordas vazias? Deve sempre ter pelo menos um número do primeiro \ d +, não?

Opção 3 funciona (ou pelo menos funciona como esperado), então de alguma forma eu estou respondendo a minha própria pergunta. Eu acho que eu estou principalmente batendo minha cabeça sobre o porquê da opção 2 não funcionar.

# -*- coding: utf-8 -*-
import re


my_str = """
Dividendengutschrift für inländische Wertpapiere

Depotinhaber    : ME

Extag           :  18.04.2013          Bruttodividende
Zahlungstag     :  18.04.2013          pro Stück       :       0,9800 EUR
Valuta          :  18.04.2013

                                       Bruttodividende :        78,40 EUR
                                      *Einbeh. Steuer  :        20,67 EUR
                                       Nettodividende  :        78,40 EUR

                                       Endbetrag       :        57,73 EUR
"""

print re.findall(r'\d+(,\d+)?', my_str)
print re.findall(r'\d+,\d+', my_str)
print re.findall(r'[-+]?\d*,\d+|\d+', my_str)

Saída é

['', '', '', '', '', '', ',98', '', '', '', '', ',40', ',67', ',40', ',73']
['0,9800', '78,40', '20,67', '78,40', '57,73']
['18', '04', '2013', '18', '04', '2013', '0,9800', '18', '04', '2013', '78,40', '20,67', '78,40', '57,73']

questionAnswers(6)

yourAnswerToTheQuestion