¿Por qué re.findall no es específico en la búsqueda de elementos de triplete en una cadena? Pitón

Así que tengo cuatro líneas de código

seq= 'ATGGAAGTTGGATGAAAGTGGAGGTAAAGAGAAGACGTTTGA'



OR_0 = re.findall(r'ATG(?:...){9,}?(?:TAA|TAG|TGA)',seq)  

Déjame explicarte lo que estoy tratando de hacer primero. . . Lo siento si esto es confuso pero voy a hacer mi mejor esfuerzo para explicarlo.

Así que estoy buscando secuencias que comiencen con'ATG' seguido de unidades de 3 de cualquier palabra char [por ejemplo, 'GGG', 'GTT', 'TTA', etc] hasta que encuentre una'TAA', 'TAG' o 'TGA' También quiero que tengan al menos 30 caracteres de largo. . . por lo tanto el {9,}?

Esto funciona hasta cierto punto, pero si se nota enseq que hayATG GAA GTT GGATGA AAG TGG AGGTAA AGA GAA GAC GTTTGA

Entonces, en este caso, debería estar encontrando 'ATGGAAGTTGGATGA' si comienza con el primer 'ATG' y continúa hasta el siguiente'TAA', 'TAG' o 'TGA'

SIN EMBARGO, cuando ejecuta la línea de código OR_0, escupe nuevamente toda la cadena de secuencia. No sé cómo hacerlo, solo considere el primer 'TAA', 'TAG' o 'TGA' seguido del primer 'ATG'

Si un 'ATG' es seguido por otro 'ATG' cuando se lee en unidades de 3, entonces eso está bien, NO debe comenzar de nuevo, pero si encuentra un 'TAA', 'TAG' o 'TGA' cuando se lee en unidades de 3 debería detenerse

Mi pregunta,por qué re.findall encuentra la secuencia más larga de 'ATG'xxx-xxx - [' TAA ',' TAG 'o' TGA '] en lugar de la primera aparición de' TAA ',' TAG 'o' TGA 'después de un ATG ¿Separados por caracteres de palabras en unidades de 3?

Una vez más, pido disculpas si esto es confuso, pero es un lío con múltiples conjuntos de datos que he basado en esta línea de texto inicial y estoy tratando de averiguar por qué

Respuestas a la pregunta(4)

Su respuesta a la pregunta