REGEX Lookahead/Lookbehind/Lookaround

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

REGEX Lookahead/Lookbehind/Lookaround

Beitrag von jani80k (ForumUser / 2 / 0 / 0 ) »
Hallo zusammen,

ich benutze schon länger REGEX, kenne es aus anderen Programmiersprachen, finde die Implementierung unter ABAP 7.50 aber etwas mau.

Es gibt leider kein Lookbehind. Es gibt lediglich ein positives und negatives Lookahead.

positiv (gefolgt von):
Input: blablabla
Regex: blabla(?=bla)
Match: blablabla

negativ (nicht gefolgt von):
Input: blab blal blaa
Regex: bla(?!b)
Match: blab blal blaa

Leider kann man nicht wie bei anderen Programmiersprachen das (?=...) vor dem Wort positionieren, das funktioniert dann nicht.

Dadurch ist es nicht möglich, das direkte Match zu verwenden, sondern ich muss mit Subgruppen arbeiten und hier dann die nicht gewünschten mit dem Operator (?:..) ausschließen.

Beispiel: ein beliebiger Barcode enthält die Zeichenfolge '$N:' dann folge ein Nachname und abschließend ein '$'.

Input: hier steht etwas$V:Hans-Herrman$N:Meier$A:21$hier steht etwas
Regex: (?:\$N\:)([a-zA-Z-]+)(?:\$)
Match: hier steht etwas$V:Hans-Herrman$N:Meier$A:21$hier steht etwas
1. Subgruppe: Meier

Ich würde mir wünschen, dass (?=\$N\:)([a-zA-Z-]+)(?=\$) das direkte Match 'Meier' liefer und ich ohne Subgruppen arbeiten muss. Das scheint aber nicht zu funktionieren (Quelle: Report DEMO_REGEX_TOY).

Kennt jemand Abhilfe?

Gruß
Jani

SAP DOKU Quellen: Untergruppen mit Registierung, Vorausschaubedingung

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


Re: REGEX Lookahead/Lookbehind/Lookaround

Beitrag von fr-g (ForumUser / 76 / 12 / 25 ) »
Mehr als du habe ich bisher auch nicht herausgefunden ;) Das scheint nicht zu gehen...für mich war der Behelf mit (?:...) und Submatches aber bisher auch ausreichend:
(?:\$N\:)([a-zA-Z-]+)(?=\$)

Die ABAP-Doku gibt bis auf den Hinweis, dass (? ...) für "future enhancements" reserviert ist, nichts diesbezüglich her:
https://help.sap.com/doc/abapdocu_750_i ... search.htm

Re: REGEX Lookahead/Lookbehind/Lookaround

Beitrag von jani80k (ForumUser / 2 / 0 / 0 ) »
kurzer Einschub:
ABAP scheint in C++ programmiert zu sein. SAP hat scheinbar für Regex einfach eine Library eingebunden und benutzt Teile davon. Von 7.50 auf 7.51 wurde in der Doku zumindest eine neuere Version dieser Library (wenn auch nicht die neueste) verlinkt.

Doku 7.50

Doku 7.51

(Link ganz unten auf "BOOST Library")

Ob das ein Indiz dafür ist, dass sich etwas tut (Features in ABAP sind diesbzgl. keine neuen hinzugekommen) oder ob man einfach eine neuere Version wegen einem Versionsupgrade des C++ Compilers nehmen musste, sei dahingestellt.

Seite 1 von 1

Vergleichbare Themen

5
Antw.
3765
Views
REGEX lookahead
von ewx » 09.05.2012 11:26 • Verfasst in ABAP® Core
12
Antw.
9465
Views
Regex für /xA0
von Thomas R. » 13.11.2013 12:13 • Verfasst in ABAP® für Anfänger
2
Antw.
2268
Views
Suchmuster mit Regex
von crishi_crd » 15.05.2014 08:19 • Verfasst in ABAP® für Anfänger
5
Antw.
3039
Views
Replace Regex
von Legxis » 24.05.2018 15:09 • Verfasst in ABAP® für Anfänger
17
Antw.
4240
Views
Regex in FIND
von hugo.data » 22.10.2018 15:33 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 12 Stunden von black_adept gelöst 23 / 3702
User Exit EXIT_RQCPRM10_001
vor 13 Stunden von a-dead-trousers 2 / 268
Trennen Strasse und Hausnummer
vor 19 Stunden von payten 13 / 10606
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1322

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.

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 12 Stunden von black_adept gelöst 23 / 3702
User Exit EXIT_RQCPRM10_001
vor 13 Stunden von a-dead-trousers 2 / 268
Trennen Strasse und Hausnummer
vor 19 Stunden von payten 13 / 10606
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1322

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2860
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9450