Warum ist re.findall nicht spezifisch, wenn es darum geht, Triplett-Elemente in einer Zeichenfolge zu finden? Python

Ich habe also vier Codezeilen

seq= 'ATGGAAGTTGGATGAAAGTGGAGGTAAAGAGAAGACGTTTGA'



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

Lassen Sie mich erklären, was ich zuerst zu tun versuche. . . Es tut mir leid, wenn dies verwirrend ist, aber ich werde mein Bestes geben, um es zu erklären.

Also suche ich Sequenzen, mit denen ich beginne"ATG" gefolgt von Einheiten von 3 eines beliebigen Wortes char [z. 'GGG', 'GTT', 'TTA' usw.], bis entweder'TAA', 'TAG' oder 'TGA' Ich möchte auch, dass sie mindestens 30 Zeichen lang sind. . . daher die {9}?

Dies funktioniert bis zu einem gewissen Grad, aber wenn Sie es bemerkenseq das gibt esATG GAA GTT GGATGA AAG TGG AGGTAA AGA GAA GAC GTTTGA

In diesem Fall sollte 'ATGGAAGTTGGATGA' gefunden werden, wenn es mit dem ersten 'ATG' beginnt und bis zum nächsten geht'TAA', 'TAG' oder 'TGA'

Wenn Sie jedoch die OR_0-Codezeile ausführen, wird die gesamte seq-Zeichenfolge zurückgespuckt. Ich weiß nicht, wie ich es machen soll, nur die erste TAA, TAG oder TGA, gefolgt von der ersten ATG.

Wenn auf ein 'ATG' ein anderes 'ATG' folgt, wenn Einheiten von 3 eingelesen werden, sollte dies NICHT von vorne beginnen, sondern wenn beim Einlesen von Einheiten von 3 ein 'TAA', 'TAG' oder 'TGA' auftritt es sollte aufhören.

Meine Frage,Warum findet man die längste Sequenz von 'ATG'xxx-xxx - [' TAA ',' TAG 'oder' TGA '] anstelle des ersten Auftretens von' TAA ',' TAG 'oder' TGA 'nach einem ATG wieder? durch Wortzeichen in 3er-Einheiten getrennt?

Nochmals, ich entschuldige mich, wenn dies verwirrend ist, aber es mit mehreren Datensätzen zu tun hat, die ich auf dieser anfänglichen Textzeile basiert habe, und ich versuche herauszufinden, warum

Antworten auf die Frage(4)

Ihre Antwort auf die Frage