Der Titel dieser Frage ist wahrscheinlich nicht ausreichend, um das Problem zu beschreiben, das ich versuche zu lösen, also hoffentlich bekommt mein Beispiel den Punkt herüber. Ich bin ein Python RegEx ist das richtige Werkzeug für den Job der Hoffnung:Python RegEx Overlapping
Zuerst sind wir für eine dieser Zeichenketten lookig:
- CATGTG
- CATTTG
- CACGTG
Zweitens ist das Muster:
- Zeichenfolge
- 6-7 Buchstaben
- Zeichenfolge
Beispiel
- match: CATGTGXXXXXXCACGTG
- no match: CATGTGXXXCACGTG (weil zwischen 3 Buchstaben)
Third, wenn eine Übereinstimmung gefunden wird, beginnen Sie die nächste Suche vom Ende des vorherigen Spiels, inklusive. Berichtsindex jedes Spiels
Beispiel:
Eingang (Leerzeichen zur besseren Lesbarkeit): XXX CATGTG XXXXXX CATTTG XXXXXXX CACGTG XXX
Workflow (Räume zur besseren Lesbarkeit):
- gefunden Spiel: CATGTG XXXXXX CATTTG
beginnt es a t 3
Wiederaufnahme der Suche bei C in CATTTG
gefunden match: CATTTG XXXXXXX CACGTG
- es beginnt bei 15
und so weiter ...
Nach ein paar Stunden Basteln, brachte mein entsetzlicher Versuch nicht, was ich erwartet hatte:
regex = re.compile("CATGTG|CATTTG|CACGTG(?=.{6,7})CATGTG|CATTTG|CACGTG")
for m in regex.finditer('ATTCATGTG123456CATTTGCCG'):
print(m.start(), m.group())
3 CATGTG
15 CATTTG (incorrect)
Sie sind ein Genie, wenn Sie das mit einer RegEx herausfinden können.Danke: D
Können Sie das, was Sie versucht haben, und die gewünschte Ausgabe posten? Wollen Sie ein Ja/Nein für die Test-Strings usw. – CJC