Python regex: patrón codicioso que devuelve múltiples coincidencias vacías

Este patrón está destinado simplemente a capturar todo en una cadena hasta el primer límite de oración potencial en los datos:

[^\.?!\r\n]*

Salida:

>>> pattern = re.compile(r"([^\.?!\r\n]*)")
>>> matches = pattern.findall("Australians go hard!!!") # Actual source snippet, not a personal comment about Australians. :-)
>>> print matches
['Australians go hard', '', '', '', '']

De la documentación de Python:

re.findall (patrón, cadena, banderas = 0)

Devuelve todas las coincidencias de patrones no superpuestos en una cadena, como una lista de cadenas. La cadena se escanea de izquierda a derecha y las coincidencias se devuelven en el orden encontrado. Si uno o más grupos están presentes en el patrón, devuelva una lista de grupos; Esta será una lista de tuplas si el patrón tiene más de un grupo. Las coincidencias vacías se incluyen en el resultado a menos que toquen el comienzo de otra coincidencia.

Ahora, si la cadena se escanea de izquierda a derecha y el operador * es codicioso, tiene mucho sentido que la primera coincidencia devuelta sea la cadena completa hasta los signos de exclamación. Sin embargo, después de que esa porción se haya consumido, no veo cómo el patrón produce una coincidencia vacía exactamente cuatro veces, presumiblemente escaneando la cadena hacia la izquierda después de la "d". Entiendo que el operador * significa que este patrón puede coincidir con la cadena vacía, simplemente no veo cómo lo haría más de una vez entre la "d" final de las letras y el "!" Inicial. de la puntuación.

Agregar el ancla ^ tiene este efecto:

>>> pattern = re.compile(r"^([^\.?!\r\n]*)")
>>> matches = pattern.findall("Australians go hard!!!")
>>> print matches
['Australians go hard']

Dado que esto elimina las coincidencias de cadenas vacías, parecería indicar que dichas coincidencias vacías estaban ocurriendo antes de la "A" inicial de la cadena. Pero eso parece contradecir la documentación con respecto a las coincidencias que se devuelven en el orden encontrado (coincidencias antes de que la "A" principal debería haber sido primero) y, nuevamente, exactamente cuatro coincidencias vacías me desconciertan.

Respuestas a la pregunta(1)

Su respuesta a la pregunta