SAP NetWeaver AS ABAP Release 752, ©Copyright 2017 SAP AG. Alle Rechte vorbehalten.
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.