Wie kann ich den folgenden Code erweitern, damit ich alle Instanzen untersuchen kann, in denen ich 2 oder weniger Übereinstimmungen zwischen meiner Teilzeichenfolge und der übergeordneten Zeichenfolge habe?String Regex zwei Fehlanpassungen Python
Substring: SSQP
String-to-Match-to: SSPQQQQPSSSSQQQSSQPSPSQSSQPSSQPPSSSSQPSPSQSSQPSSSSQPSPSQSSQPSSSSQPSPSQ
Hier ist ein Beispiel, wo nur eine mögliche Diskrepanz eingebaut ist:
>>> s = 'SSPQQQQPSSSSQQQSSQPSPSQSSQPSSQPPSSSSQPSPSQSSQPSSSSQPSPSQSSQPSSSSQPSPSQ'
>>> re.findall(r'(?=(SSQP|[A-Z]SQP|S[A-Z]QP|SS[A-Z]P|SSQ[A-Z]))', s)
['SSQQ', 'SSQP', 'SSQP', 'SSQP', 'SSQP', 'SSQP', 'SSQP', 'SSQP', 'SSQP']
Offensichtlich Einbeziehung der Möglichkeit von zwei Fehlanpassungen in dem obigen Code würde eine Vielzahl von Brute-Force-Typisierung aller möglichen Kombinationen erfordern.
Wie kann ich diesen Code erweitern (oder diesen Code umgestalten), um die Möglichkeit von zwei Fehlanpassungen zu untersuchen?
Darüber hinaus möchte ich meine Ausgabe so ändern, dass ich den numerischen Index zurückgegeben (nicht SSQQ
oder SSQP
) der genauen Position der Teilzeichenfolge die Zeichenfolge übereinstimmt.
In der Tat, reguläre Ausdrücke sind nur das falsche Werkzeug, um insgesamt zu verwenden. Für 2 Fehler von 20, würde es 190 Alternativen im Muster geben. –
Können Sie Indexzahlen zurückgeben, ähnlich wie bei "match.start (0)" - Methode von 200_success? – warship
@warship Beende den Schnitt! – Kasramvd