ABAP - Schlüsselwortdokumentation →  ABAP - Referenz →  Interne Daten verarbeiten →  Zeichen- und Bytekettenverarbeitung →  Ausdrücke und Funktionen für die Zeichenkettenverarbeitung →  Reguläre Ausdrücke →  Syntax regulärer Ausdrücke → 

Vereinfachte reguläre Ausdrücke

Neben den regulären Ausdrücken nach erweitertem POSIX-Standard IEEE 1003.1 bietet die Klasse CL_ABAP_REGEX zusätzlich einen Alternativtyp vereinfachter regulärer Ausdrücke mit eingeschränkter Funktionalität an. Diese vereinfachten regulären Ausdrücke (kurz: vereinfachte Ausdrücke) unterstützten nicht alle POSIX-Operatoren und verwenden eine teilweise abweichende Syntax. Die Semantik der regulären Ausdrücke und der vereinfachten Ausdrücke ist jedoch gleich.

Vereinfachte Syntax

Die folgende Tabelle gibt einen Überblick über die Syntaxunterschiede zwischen regulären Ausdrücken und vereinfachten regulären Ausdrücken.

reguläre Syntax vereinfachte Syntax
* *
+ nicht unterstützt
{ } \{ \}
( ) \( \)
[ ] [ ]
| nicht unterstützt
(?= ) (?! ) nicht unterstützt
(?: ) nicht unterstützt

Die Tabelle zeigt, dass viele Sonderzeichen der regulären Syntax in der vereinfachten Syntax ihre Wirkung verlieren. Runden und geschweiften Klammern muss das Zeichen \ vorangestellt werden, wenn sie wie in der regulären Syntax wirken sollen.

Hinweise

Beispiel

Die Tabelle zeigt den Unterschied in der Klammerung zwischen regulärer und vereinfachter Syntax. Die beiden letzten Spalten zeigen Beispiele, auf welche die Ausdrücke der ersten Spalte je nach verwendeter Syntax passen.

Pattern reguläre Syntax vereinfachte Syntax
(.) a (a)
\(.\) (a) a

Beispiel

Die erste Suche erfolgt mit regulärer Syntax und es werden die ersten drei Buchstaben "aaa" gefunden. In der zweiten Suche mit vereinfachter Syntax hat "+" keine Bedeutung als Sonderzeichen und es wird die Unterfolge "a+" ab Offset 2 gefunden.

DATA: regex TYPE REF TO cl_abap_regex,
      res   TYPE        match_result_tab.

CREATE OBJECT regex
  EXPORTING
    pattern      = 'a+'
    simple_regex = abap_false.
FIND ALL OCCURRENCES OF REGEX regex IN 'aaa+bbb' RESULTS res.

CREATE OBJECT regex
  EXPORTING
    pattern      = 'a+'
    simple_regex = abap_true.
FIND ALL OCCURRENCES OF REGEX regex IN 'aaa+bbb' RESULTS res.