Ich habe diese Textzeile, die ich mit Regex scannen möchte.Scannen Sie eine Zeichenfolge weiter, bis sie das erste/letzte Vorkommen einer Zeichenfolge gefunden hat
axhaweacb
Ich möchte den Text von "a" nach "b" bekommen. Dies ist mein aktuelles Muster:
pattern = "a.*?b";
Die aktuelle Ausgabe ist: axhaweacb
(es ist alles, was dazwischen eine Aufnahme und b), aber was ich will zurück erhalten ist „acb“.
Warum Sie fragen können? Die Logik/Regex, die ich anwenden möchte, ist: Wenn Sie das erste Vorkommen der "von" Regex ("a") finden, starten Sie den Scanvorgang. Wenn Sie ein anderes Vorkommen des "von" Buchstaben finden, ohne das "letzte" Vorkommen eines Buchstabens zu finden - in diesem Fall "b", entfernen Sie die vorherige Zeichenkette - also axh
, so dass die Zeichenkette zu: aweacb
wird. Wenn Sie ein anderes Vorkommen von "von" finden - in diesem Fall a
, ohne "to" zu finden - b
. Entfernen Sie die vorherige Zeichenfolge, sodass sie acb
wird. Dann scannen Sie erneut. In diesem Fall haben wir unser Muster gefunden - a bis b, ohne ein anderes "a" auf unserem Weg.
Ich weiß, dass ich die Zeichenfolge zu Anfang mit Teilstring und bis zum letzten Vorkommen von "a" abzustreifen kann - aber ich möchte dies auch für andere Strings wiederverwenden. Und in diesem Fall wird immer alles bis zum letzten Auftreten von etwas substringiert - was dazu führt, dass viele Daten entfernt werden.
Ich hoffe, ich habe meine Frage/Problem klar gemacht. Wenn nicht, bitte sag es mir und ich werde mein Bestes tun, um mein Problem zu klären.
Vielen Dank.
Wissen Sie, dass die Zeichenfolge immer 3 Zeichen lang sein? In diesem Fall könnten Sie das Muster "a.b" verwenden. Ich weiß nicht, ob es für deine anderen Saiten verallgemeinert werden kann, aber du kannst darüber nachdenken. –