Expresión regular de Python que coincide con números de punto flotante

Posible duplicado:
Cómo detectar un número de punto flotante usando una expresión regular

¿Cómo escribo una expresión regular de Python que coincida con representaciones de cadena de números de punto flotante?

La expresión debe coincidir con cualquier cadena aceptada por el constructor float como en float('3.5') . Por lo tanto, la expresión debe coincidir con '0.' y '.0' pero no '.'

No hay necesidad de hacer coincidir las representaciones de cadena de infinito y NaN.

 r'[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?'