Mir wurde ein Problem zugeordnet, um Gene zu finden, wenn eine Zeichenfolge der Buchstaben A, C, G oder T alle in einer Reihe, wie ATGCTCTCTTGATTTTTTTTATGTGTAGCCATGCACACACACACATAAGA gegeben. Ein Gen wird mit ATG gestartet und endet entweder mit TAA, TAG oder TGA (das Gen schließt beide Endpunkte aus). Das Gen besteht aus Dreiergruppen von Buchstaben, so dass seine Länge ein Vielfaches von drei ist, und keines dieser Tripel kann das Anfangs-/Ende-Triplet sein, das oben aufgelistet ist. Also, für die Zeichenfolge oberhalb der Gene sind es CTCTCT und CACACACACACA. Und tatsächlich funktioniert meine Regex für diese bestimmte Zeichenfolge. Hier ist, was ich bisher (und ich bin ziemlich glücklich mit mir, dass ich so weit gekommen):Java Regex für genom puzzle
(?<=ATG)(([ACGT]{3}(?<!ATG))+?)(?=TAG|TAA|TGA)
Wenn es jedoch ein ATG ist und End-Triplett in einem anderen Ergebnis, und nicht mit den Triolen ausgerichtet von diesem Ergebnis versagt es. Zum Beispiel:
Results for TCGAATGTTGCTTATTGTTTTGAATGGGGTAGGATGACCTGCTAATTGGGGGGGGGG :
TTGCTTATTGTTTTGAATGGGGTAGGA
ACCTGC
Es sollte auch eine GGG findet aber nicht: TTGCTTATTGTTTTGA (ATG | GGG | TAG) GA
Ich bin neu Regex im Allgemeinen und ein wenig hängen ... einfach Ein kleiner Hinweis wäre toll!
Was sollte passiert mit ATGATGTAG? Match oder keine Übereinstimmung? –
+1 - Ich habe keine Zeit, darüber nachzudenken, und ich weiß nicht, ob dies eine angemessene Verwendung von Regex ist, aber ich liebe die Tatsache, dass Sie es auf ein interessantes Problem in der Biologie anwenden. Gutes Zeug. – duffymo
'ATGATGTAG' würde nicht übereinstimmen, da ATG nicht zu den enthaltenen Triplets gehören kann. – Swordbeard