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 → 

Einzelzeichenmuster

Einzelzeichen werden durch Literalzeichen oder Operatoren repräsentiert. Durch Voranstellen eines Rückstrichs \ wird ein Sonderzeichen eines Operators als Literalzeichen interpretiert. Dies gilt insbesondere auch für den Rückstrich \ selbst, sodass der reguläre Ausdruck \\ auf das Einzelzeichen \ passt. Folgt dem Rückstrich ein Literalzeichen, so wird der Rückstrich ignoriert und gilt als nicht vorhanden.

Literalzeichen

Ein Literalzeichen ist ein Zeichen, das kein Sonderzeichen ist, oder ein Sonderzeichen, dem ein Rückstrich \ vorangestellt oder das in \Q ... \E eingeschlossen ist. Als Suchmuster stimmt ein Literalzeichen genau mit dem gleichen Einzelzeichen überein.

Hinweis

Die Berücksichtigung der Groß-/Kleinschreibung kann bei den zugehörigen Befehlen bzw. Methoden gesteuert werden.

Beispiele

Die folgende Tabelle zeigt einige Ergebnisse einer Überprüfung mit Berücksichtigung der Groß-/Kleinschreibung.

Pattern text match
A A X
A a -
\. . X
A AB -
AB AB X

Der reguläre Ausdruck AB ist eine Verkettung von zwei Ausdrücken für Einzelzeichen.

Operatoren für Einzelzeichen

Diese Operatoren werden aus den Sonderzeichen ., [, ], ^ und - aufgebaut, wobei die letzten beiden nur an besonderen Positionen innerhalb von [ ] als Sonderzeichen wirken. Die Sonderzeichen können durch das Voranstellen von \ zu Literalzeichen gemacht werden.

Platzhalter für Einzelzeichen

Das Sonderzeichen . ist ein Platzhalter für ein beliebiges Einzelzeichen. Der Operator \C hat die gleiche Bedeutung wie das Sonderzeichen .. Ein regulärer Ausdruck . oder \C stimmt mit genau einem beliebigen Einzelzeichen überein.

Beispiele

Die folgende Tabelle zeigt einige Ergebnisse einer Überprüfung, wobei die Berücksichtigung der Groß-/Kleinschreibung keine Rolle spielt.

Pattern Text match
. A X
\C a X
. AB -
.. AB X

Der reguläre Ausdruck .. ist eine Verkettung von zwei Ausdrücken für Einzelzeichen.

Selbstdefinierte Mengen für Einzelzeichen

Die Sonderzeichen [ ] können um beliebig viele Literalzeichen oder Bezeichner für Zeichenklassen (siehe unten) gesetzt werden und definieren dadurch eine Menge von Literalzeichen. Ein regulärer Ausdruck [...] stimmt mit genau einem Einzelzeichen überein, das innerhalb der Klammern als Literalzeichen aufgeführt ist, bzw. das in einer angegebenen Zeichenklasse enthalten ist. In den Klammern muss mindestens ein Literalzeichen oder ein Bezeichner für eine Zeichenklasse (siehe unten) stehen. Eines der Zeichen [ oder ], das direkt hinter der öffnenden Klammer steht, wird als Literalzeichen interpretiert. Manche der mit einem Rückstrich eingeleiteten Sonderzeichen wie \A oder \Q verlieren innerhalb von Mengen ihre Sonderfunktion und werden als einfaches Literalzeichen A bzw. Q interpretiert.

Beispiele

Die folgende Tabelle zeigt einige Ergebnisse einer Überprüfung.

Pattern Text match
[ABC] B X
[ABC] ABC -
[AB][CD] AD X
[\d] 9 X

Der reguläre Ausdruck [AB][CD] ist eine Verkettung von zwei Ausdrücken für Einzelzeichen.

Negation einer selbstdefinierten Menge für Einzelzeichen

Wenn das Zeichen ^ als erstes Zeichen einer selbstdefinierten Menge für Einzelzeichen direkt hinter [ aufgeführt wird, wirkt es als Sonderzeichen und negiert die restliche Menge von Literalzeichen bzw. Zeichenklassen. Ein regulärer Ausdruck [^...] stimmt mit genau einem Einzelzeichen überein, das nicht innerhalb der Klammern als Literalzeichen aufgeführt ist, bzw. das nicht in einer angegebenen Zeichenklasse enthalten ist. Ein Zeichen ^, das nicht direkt hinter [ aufgeführt ist, wirkt als Literalzeichen.

Beispiele

Die folgende Tabelle zeigt einige Ergebnisse einer Überprüfung.

Pattern Text match
[^ABC] B -
[^ABC] Y X
[^A][^B] BA X
[A^B] ^ X

Der reguläre Ausdruck [^A][^B] ist eine Verkettung von zwei Ausdrücken für Einzelzeichen.

Bereiche in einer selbstdefinierten Menge für Einzelzeichen

Wenn das Zeichen - zwischen zwei Literalzeichen steht, wirkt es als Sonderzeichen und definiert einen Bereich zwischen den Literalzeichen. Der Bereich ist die Menge von Zeichen, die in der Codepage des aktuellen Betriebssystems von den Literalzeichen eingeschlossen wird. Ein regulärer Ausdruck [...-...] stimmt mit genau einem Einzelzeichen überein, das innerhalb des definierten Bereichs liegt. Ein Zeichen -, das nicht zwischen zwei Literalzeichen steht, wirkt als Literalzeichen. Ein Literalzeichen darf nicht Teil von zwei Bereichen sein, d.h., 'a-z-Z' ist kein gültiger regulärer Ausdruck.

Beispiele

Die folgende Tabelle zeigt einige Ergebnisse einer Überprüfung.

Pattern Text match
[A-Za-z0-9] B X
[A-Za-z0-9] 5 X
[A-Za-z0-9] # -
[A-Za-z0-9] - -
[A-Za-z0-9-] - X

Im letzten Ausdruck wirkt das abschließende - nicht als Sonderzeichen.

Zeichenklassen

Innerhalb von mit [ ] definierten Mengen für Einzelzeichen können für bestimmte Zeichenmengen vordefinierte Zeichenklassen angegeben werden, deren Verhalten aber abhängig von der Sprache und der Plattform sein kann.

Hinweise

Beispiele

Die folgende Tabelle zeigt einige Ergebnisse einer Überprüfung mit Berücksichtigung der Groß-/Kleinschreibung.

Pattern Text match
[[:alnum:]] a X
[[:alnum:]] ; -
[[:alpha:]] 1 -
[[:punct:]] . X
[[:lower:]] â X
[[:upper:]] Ä X
[[:digit:][:alpha:]]+ a1b2c3 X

Abkürzungen für Zeichenmengen

Für häufig benötigte Zeichenmengen stehen spezielle Operatoren als Abkürzungen zur Verfügung:

Zeichenmenge Abk. Bedeutung
[[:digit:]] \d Platzhalter für eine Ziffer
[^[:digit:]] \D Platzhalter für eine Nicht-Ziffer
[[:lower:]] \l Platzhalter für einen Kleinbuchstaben.
[^[:lower:]] \L Platzhalter für ein Zeichen, das kein Kleinbuchstabe ist.
[[:space:]] \s Platzhalter für ein Leerzeichen.
[^[:space:]] \S Platzhalter für ein Nicht-Leerzeichen.
[[:upper:]] \u Platzhalter für einen Großbuchstaben.
[^[:upper:]] \U Platzhalter für ein Zeichen, das kein Großbuchstabe ist.
[[:word:]] \w Platzhalter für ein alphanumerisches Zeichen zuzüglich dem Unterstrich _.
[^[:word:]] \W Platzhalter für ein nicht-alphanumerisches Zeichen außer dem Unterstrich _.

Hinweis

Wenn in den ABAP-Anweisung FIND und REPLACE oder beim Erzeugen eines Objekts der Klasse CL_ABAP_REGEX die Groß-/Kleinschreibung nicht berücksichtigt wird, sind \l und \u gleichbedeutend zu [[:alpha:]] bzw. \L und \U gleichbedeutend zu [^[:alpha:]]. Die Sonderzeichen \w, \u, \l, \d, \s können auch innerhalb von Mengen [... ] aufgeführt werden. Die Verwendung der Sonderzeichen \W, \U, \L, \D, \S innerhalb von Mengen ist nicht erlaubt und löst eine Ausnahme CX_SY_INVALID_REGEX aus.

Beispiele

Die folgende Tabelle zeigt einige Ergebnisse einer Überprüfung mit Berücksichtigung der Groß-/Kleinschreibung.

Pattern Text match
\d 4 X
\D ; X
\l u X
\l U -
\L S X
\s   X
\S # X
\u U X
\U . X
\w A X
\w 8 X
\W : X
\W _ -

Äquivalenzklassen

Die Operatoren [..] und [==] sind für spätere Spracherweiterungen reserviert und lösen bei Verwendung innerhalb von Mengen derzeit die Ausnahme CX_SY_INVALID_REGEX aus.