Wie überprüft man am besten, ob StringA = StringB mit einem anderen StringC an einem beliebigen Punkt eingefügt wurde?
Wenn Sie beispielsweise abcdef
und abcXYZdef
angeben, möchte ich feststellen, dass abcXYZdef
ist abcdef
mit XYZ
an Position 4 eingefügt.
Auf der anderen Seite, wenn abcdef
und abRSTcdXYZef
angegeben ist, möchte ich feststellen, dass die erste Zeichenfolge nicht mit nur einer einzigen Einfügung in die zweite
Ich weiß, dass ich StringA von beiden Seiten Zeichen für Zeichen durchgehen und prüfen kann, ob es den gesamten StringB abdeckt, aber das wäre ziemlich mühsam zu schreiben. Es wäre auch ziemlich langsam, dies in Python zu tun (wo ich gerade arbeite), und ich würde dafür lieber keine spezielle C-Erweiterung schreiben.
Gibt es irgendwelche cleveren Dinge, die ich mit Regex's oder anderen Standard-String-Manipulationsfunktionen machen kann, die das für mich tun können?
edit: Zur Klarstellung ist StringC völlig unbekannt; Es gibt möglicherweise nicht einmal eine gültige StringC, und ich werde wissen wollen, ob das der Fall ist.
Das ... fühlt sich zu einem gewissen Grad kludgy an, und es ist wahrscheinlich nur halb da, aber es scheint, als hätte es in Ihrem Beispiel die Teilzeichenfolge gefunden und könnte wahrscheinlich etwas erweitert werden. Ich kann es in einer Minute mit etwas mehr Zeit zum Testen überarbeiten, aber es ist ein Annäherungskonzept:
%Vor% Ich mag die Verwendung von range(len())
nicht, aber in diesem speziellen Anwendungsszenario denke ich, dass es angemessen ist. Es wird der Index gedruckt, wo eine Einfügung stattgefunden hat, wenn eine einzelne Einfügung s1 in s2 verwandelt.