Suche nach einer Regex-Zeichenfolge, die es mir ermöglicht, die am weitesten rechts stehende (falls vorhanden) Gruppe von Ziffern zu finden, die in eine Zeichenfolge eingebettet sind. Wir kümmern uns nur um zusammenhängende Ziffern. Zeichen, Kommas, Dezimalzahlen usw. sind uns egal. Diese sollten, wenn sie gefunden werden, einfach wie ein Buchstabe als Ziffern behandelt werden.
Dies ist für Ersetzungs- / Inkrementierungszwecke, also müssen wir auch alles vor und nach der erkannten Zahl aufnehmen, so dass wir die Zeichenkette rekonstruieren können, nachdem wir den Wert inkrementiert haben, so dass wir eine tokenisierte Regex brauchen.
Hier sind Beispiele, wonach wir suchen:
Als Beispiel für das, was wir wollen, wäre es so, als würde man mit dem Namen 'Item 4-1a' beginnen und die '1' mit allem herausziehen, bevor sie das Präfix und alles nach dem Suffix ist. Dann können wir die Werte "Item 4-2a", "Item 4-3a" und "Item 4-4a" in einer Code-Schleife erzeugen.
Wenn ich jetzt nach dem ersten Satz suchen würde, wäre das einfach. Ich würde nur den ersten zusammenhängenden Block von 0 oder mehr Nicht-Ziffern für das Präfix finden, dann den Block von 1 oder mehr zusammenhängenden Ziffern für die Nummer, dann wäre alles andere bis zum Ende das Suffix.
Das Problem, das ich habe, ist, wie man das Präfix so definiert, dass es alle (wenn überhaupt) Nummern außer dem letzten Satz enthält. Alles, was ich für das Präfix versuche, schluckt dieses letzte Set, auch wenn ich versucht habe, es bis zum Ende zu verankern, indem ich einfach das obige umkehre.
Wie wäre es mit:
%Vor%dann erhöhen Sie die zweite Gruppe und concat alle 3.
Erläuterung:
%Vor%Die erste Erfassungsgruppe passt alle Zeichen bis zur ersten Ziffer der letzten Zifferngruppe vor dem Ende der Zeichenfolge an.
oder wenn Sie die benannte Gruppe verwenden können
%Vor%Probieren Sie die nächste Regex:
%Vor%Erläuterung:
%Vor% BEARBEITEN (OFFTOPIC der Frage): : Diese Antwort ist inkorrekt, aber diese Frage wurde bereits in anderen Posts beantwortet. Um zu vermeiden, diese zu löschen, benutze ich zum Beispiel denselben Regex in Perl
könnte so verwendet werden, um das gleiche Ergebnis zu erhalten wie in C#
(letzte Ziffer erhöhen):
Sie können auch eine etwas einfachere Version ausprobieren:
%Vor%