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.
3587
Views
REGEX lookahead
von ewx » 09.05.2012 11:26 • Verfasst in ABAP® Core
12
Antw.
8853
Views
Regex für /xA0
von Thomas R. » 13.11.2013 12:13 • Verfasst in ABAP® für Anfänger
17
Antw.
3770
Views
Regex in FIND
von hugo.data » 22.10.2018 15:33 • Verfasst in ABAP® für Anfänger
5
Antw.
2688
Views
Replace Regex
von Legxis » 24.05.2018 15:09 • Verfasst in ABAP® für Anfänger
13
Antw.
5639
Views
REGEX - CX_SY_INVALID_REGEX
von nickname8 » 23.04.2018 13:49 • Verfasst in ABAP® Core

Über diesen Beitrag


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

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.