Reguläre Ausdrücke: letzte Fundstelle Thema ist als GELÖST markiert

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Reguläre Ausdrücke: letzte Fundstelle

Beitrag von ST22 (Specialist / 283 / 45 / 41 ) »
Hallo Zusammen,

es ist schon spät und ich weiß nicht weiter :shock:

Ich möchte in einem Textfeld das letzte Auftreten eines Suchmusters finden.
Text: '456789 domäne ztest #1213 #f789 # 456789'

Ich finde mit dem Tool DEMO_REGEX_TOY und folgendem Suchmuster '\#+[[:blank:]0-9]+'
die Stellen #1213 und # 456789.

Wie kann ich in meinem Programm dafür sorgen, dass ich nur die letzte Fundstelle zurück bekomme, bzw. noch besser exakt die letzte Fundstelle mit Leerzeichen überschreiben kann?
Wichtig wäre noch zu erwähnen, dass ich nach der letzten Raute alles numerische zurück bekommen möchte, und es zwischen der letzten Raute und dem numerischen Teilstring kein anderes Zeichen als SPACE geben darf, oder die Zahlen unmittelbar auf die letzte Raute folgen.

Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt :?

Schöne Grüße

Frank

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Reguläre Ausdrücke: letzte Fundstelle

Beitrag von ewx (Top Expert / 4918 / 332 / 655 ) »

Code: Alles auswählen.

DATA text TYPE string VALUE '456789 domäne ztest #1213 #f789 # 456789'.
DATA search TYPE string VALUE '\#+[[:blank:]0-9]+'.

FIND ALL OCCURRENCES OF REGEX search IN text RESULTS DATA(result).
In RESULT sind ZWEI Einträge... ;)

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
ST22


Re: Reguläre Ausdrücke: letzte Fundstelle

Beitrag von fr-g (ForumUser / 78 / 12 / 25 ) »
Du könntest hier auch mit einem negative lookahead arbeiten, der ausschließt, dass du denselben Suchstring noch einmal findest:

\#+[[:blank:]0-9]+(?!.*\#+[[:blank:]0-9]+)

Folgende Benutzer bedankten sich beim Autor fr-g für den Beitrag:
ST22


Re: Reguläre Ausdrücke: letzte Fundstelle

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Leider etwas zu spät, dennoch "negative look ahead":
(#[ \d]+)(?!.*#[ \d]+)

Folgende Benutzer bedankten sich beim Autor Dele für den Beitrag:
ST22


Re: Reguläre Ausdrücke: letzte Fundstelle

Beitrag von black_adept (Top Expert / 4159 / 136 / 960 ) »
Diese negativen Lookaheads bereiten mir immer Kopfschmerzen. Ich bevorzuge den Zeilenendeoperator:

Code: Alles auswählen.

FIND    REGEX '(#)(\s*\d*$)' IN s SUBMATCHES DATA(s1) DATA(s2).
REPLACE REGEX '(#)(\s*\d*$)' IN s WITH '$1'.
Das sollte das etwa machen was du willst. Wenn s kein String sondern ein char-Feld ist müsste vor das $ noch ein \s* gesetzt werden

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
ST22

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Feldroutine ADSO Transformation
vor einer Woche von codemaster1 2 / 69584
Stücklisten
vor einer Woche von Selma.schwarz 1 / 71181
Belege
vor einer Woche von Selma.schwarz 1 / 69208

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Vergleichbare Themen

reg.Ausdrücke beim SELECT
von msfox » 28.11.2023 09:28
Ausdrucke aus Testsystem kennzeichnen
von hsiebert » 13.11.2007 09:36
Vergleichen zwei Ausdrücke
von Nadine_2706 » 01.09.2011 07:41
ECC 6 -> Wasserzeichen global für alle Ausdrucke...
von marvin » 27.05.2008 12:52
Anzahl Ausdrucke vorgeben und sperren
von wyps » 23.07.2007 13:18

Aktuelle Forenbeiträge

Feldroutine ADSO Transformation
vor einer Woche von codemaster1 2 / 69584
Stücklisten
vor einer Woche von Selma.schwarz 1 / 71181
Belege
vor einer Woche von Selma.schwarz 1 / 69208

Unbeantwortete Forenbeiträge

Stücklisten
vor einer Woche von Selma.schwarz 1 / 71181
Belege
vor einer Woche von Selma.schwarz 1 / 69208