Ich suche nach Mustern in einem String beginnend mit ATG
, endend mit und Länge = Vielfaches von 3. ATG
und TAG, TAA or TGA
können nur am jeweiligen Anfang oder Ende erscheinen. Das heißt:Regex beginnt mit "ATG" endet mit "TAG, TAA oder TGA" aber enthält nicht "ATG" und "TAG, TAA oder TGA" zwischen
Von ATGTTGTGATGT
Extrakt ATGTTGTGA
Von ATGATGTTGTGATGT
Extrakt ATGTTGTGA
Derzeit regex (ATG)([ATG]{3})+?(TAG|TAA|TGA)
Ich verwende.
Für ATGATGTTGTGATGT
dies bringt mir das falsche Ergebnis ATGATGTTGTGA
. Ich habe versucht:
(^ATG)(!?=.*ATG)([ATG]{3})+?(TAG|TAA|TGA)
(^ATG)(!?=(ATG)+)([ATG]{3})+?(TAG|TAA|TGA)
Wie es sagen ATG
nur einmal am Anfang enthalten und nicht mehr danach?
Ihr erstes Beispiel scheint nicht Ihre Beschreibung passen: es funktioniert nicht mit TAG Ende | TAA | TGA? – Ward
Dies ist mit regexp nicht möglich. Sie können eine * negative Suche * durchführen, wenn 'ATG' nicht zuerst oder zuletzt ist und * dieses Ergebnis negiert *. –
Probieren Sie ['ATG (?: (?! ATG) [ATG] {3}) *? (?: TAG | TAA | TGA)'] (https://regex101.com/r/GCdGs8/1) –