Reguläre Ausdrücke

Sie können reguläre Ausdrücke verwenden, um ein Set von Zeichenfolgen basierend auf allgemeinen Eigenschaften zu beschreiben, die allen Zeichenfolgen im Set gemein sind.

Ein regulärer Ausdruck ist im Wesentlichen eine Folge von Zeichen, die ein Suchmuster für den Musterabgleich definiert. Reguläre Ausdrücke variieren in Komplexität, aber sobald Sie die Grundlagen ihrer Konstruktion verstanden haben, können Sie jeden regulären Ausdruck entschlüsseln oder erstellen.

Zeichenfolgenliterale

Die grundlegendste Form des Musterabgleichs ist die Übereinstimmung eines Zeichenfolgenliterals. Beispiel: Wenn der reguläre Ausdruck EMP und die Eingabezeichenfolge EMP lauten, ist die Übereinstimmung erfolgreich, weil die Zeichenfolgen identisch sind. Dieser reguläre Ausdruck entspricht auch einer beliebigen Zeichenfolge, die EMP enthält, wie EMPLOYEE, TEMP und TEMPERATURE.

Metazeichen

Sie können auch einige Sonderzeichen verwenden, die sich auf die Übereinstimmung eines Musters auswirken. Eines der gängigsten ist das Punktsymbol (.), das mit einem beliebigen Zeichen übereinstimmt. Beispiel: EMPLOYEE.ID entspricht EMPLOYEE_ID und EMPLOYEE-ID, aber nicht EMPLOYEE_VERIFICATION_ID. Hier ist der Punkt ein Metazeichen - ein Zeichen mit besonderer Bedeutung, das vom Matcher interpretiert wird.

Weitere Beispiele für Metazeichen: ^ $ ? + * \ - [ ] ( ) { }.

Wenn ein Metazeichen als gewöhnliches Zeichen behandelt werden soll, können Sie es mit einem umgekehrten Schrägstrich (\) maskieren. Beispiel: Der reguläre Ausdruck 9\+9 entspricht 9+9.

Zeichenklassen

Eine Zeichenklasse ist ein Satz von Zeichen in eckigen Klammern. Sie gibt die Zeichen an, die erfolgreich mit einem einzelnen Zeichen aus einer angegebenen Eingabezeichenfolge übereinstimmen.

In der folgenden Tabelle sind einige allgemeine reguläre Ausdruckskonstrukte beschrieben.

Konstrukt Beschreibung
[abc]

Entspricht einem der Zeichen, die in eckigen Klammern angegeben sind.

Beispiel: EMPLOYE[ER] entspricht EMPLOYEE und EMPLOYER.

[^abc]

Entspricht einem beliebigen Zeichen, mit Ausnahme der in eckigen Klammern angegebenen Zeichen.

Beispiel: [^BC]AT entspricht RAT und HAT, nicht jedoch BAT und CAT.

[A-Z0-9]

Entspricht einem beliebigen Zeichen im durch eckige Klammern angegebenen Bereich. Um einen Bereich anzugeben, fügen Sie einfach das Bindestrichzeichen "-" zwischen dem ersten und dem letzten abzugleichenden Zeichen ein, z.B. [1-5] oder [A-M]. Außerdem können Sie verschiedene Bereiche nebeneinander in die Klasse einfügen, um die Übereinstimmungsmöglichkeiten noch zu erweitern.

Beispiel: [B-F]AT entspricht BAT, CAT, DAT, EAT und FAT, nicht jedoch AAT und GAT.

Oracle Data Safe unterstützt auch vordefinierte Zeichenklassen.

Erfassungsgruppen

Mithilfe von Erfassungsgruppen können Sie mehrere Zeichen als eine Einheit behandeln. Eine Erfassungsgruppe wird erstellt, indem die zu gruppierenden Zeichen in Klammern eingeschlossen werden. Beispiel: Der reguläre Ausdruck (SSN) erstellt eine einzelne Gruppe, die die Buchstaben S, S und N enthält.

Quantifizierer

Mithilfe von Quantifizierern können Sie die Anzahl der Vorkommen für den Abgleich angeben.

In der folgenden Tabelle sind einige allgemeine Quantifizierer beschrieben.

Quantifizierer Beschreibung
X?

Entspricht null oder einem Vorkommen des angegebenen Zeichens oder der angegebenen Zeichengruppe.

Beispiel: SSN_NUMBERS? entspricht den Zeichenfolgen SSN_NUMBER und SSN_NUMBERS.

X*

Entspricht null oder mehreren Vorkommen des angegebenen Zeichens oder der angegebenen Zeichengruppe.

Beispiel: TERM.*DATE entspricht Zeichenfolgen wie TERMDATE, TERM_DATE und LAST_TERMINATION_DATE.

X+

Entspricht einem oder mehreren Vorkommen des angegebenen Zeichens oder der angegebenen Zeichengruppe.

Beispiel: TERM.+DATE entspricht Zeichenfolgen wie TERM_DATE und TERMINATION_DATE, nicht jedoch TERMDATE.

X{n}

Entspricht dem angegebenen Zeichen oder der Gruppe von Zeichen genau n Mal.

Beispiel: 9{3} entspricht 999, nicht jedoch 99.

X{n,}

Entspricht dem angegebenen Zeichen oder der angegebenen Zeichengruppe mindestens n Mal.

Beispiel: 9{3,} entspricht 999, 9999 und 99999, nicht jedoch 99.

X{n,m}

Entspricht dem angegebenen Zeichen oder der angegebenen Zeichengruppe mindestens n Mal, jedoch nicht mehr als m Mal.

Beispiel: 9{3,4} entspricht 999 und 9999, nicht jedoch 99.

Sie können Quantifizierer auch mit Zeichenklassen und Erfassungsgruppen verwenden.

Ein Beispiel für einen regulären Ausdruck mit einer Zeichenklasse ist SSN[0-9]+, der Zeichenfolgen wie SSN0, SSN1 und SSN12 entspricht. Hier ist [0-9] eine Zeichenklasse und kann ein oder mehrere Male verwendet werden. Der reguläre Ausdruck stimmt nicht mit SSN überein.

Ein Beispiel für einen regulären Ausdruck mit einer Erfassungsgruppe ist SSN_NUM(BER)?, der SSN_NUM und SSN_NUMBER entspricht. (BER) ist eine Erfassungsgruppe und ist kein- oder einmal zulässig.

Begrenzungs-Matcher

Mit Begrenzungs-Matchern können Sie Muster genauer abgleichen, indem Sie angeben, an welcher Stelle in der Zeichenfolge die Übereinstimmung stattfinden soll. So könnten Sie beispielsweise nach einem bestimmten Wort suchen, jedoch nur, wenn es am Anfang oder am Ende einer Eingabezeichenfolge steht.

In der folgenden Tabelle sind allgemeine Begrenzungs-Matcher beschrieben.

Begrenzungskonstrukt Beschreibung
^

Entspricht dem angegebenen Zeichen oder der Gruppe von Zeichen am Anfang einer Zeichenfolge (beginnt mit der Suche).

Beispiel: ^VISA gleicht Zeichenfolgen ab, die mit VISA beginnen.

$

Entspricht dem angegebenen Zeichen oder der Zeichengruppe am Ende einer Zeichenfolge (endet mit der Suche).

Beispiel: NUMBER$ gleicht Zeichenfolgen ab, die auf NUMBER enden.

\b

Markiert eine Wortbegrenzung. Entspricht dem Zeichen oder der Gruppe von Zeichen, die zwischen einem Paar von \b angegeben werden, nur, wenn es sich um ein separates Wort handelt (im Gegensatz zu einer Teilzeichenfolge innerhalb einer längeren Zeichenfolge).

Beispiel: \bAGE\b entspricht Zeichenfolgen wie EMPLOYEE AGE und PATIENT AGE INFORMATION, nicht jedoch Zeichenfolgen wie AGEING und EMPLOYEEAGE.

Wenn kein Begrenzungs-Matcher angegeben ist, wird eine "Enthält"-Suche durchgeführt. Beispiel: ELECTORAL gleicht Zeichenfolgen ab, die ELECTORAL enthalten, wie ELECTORAL_ID, ID_ELECTORAL und ELECTORALID.

Eine genaue Übereinstimmungssuche kann mit ^ und $ ausgeführt werden. Beispiel: ^ADDRESS$ sucht nach der genauen Zeichenfolge ADDRESS. Das entspricht der Zeichenfolge ADDRESS, jedoch nicht Zeichenfolgen wie PRIMARY_ADDRESS und ADDRESS_HOME.

Logische Operatoren

Wenn Sie eines der Zeichen oder einer Gruppe von per Pipe getrennten Zeichen abgleichen möchten, können Sie den Pipe- bzw. das vertikale Balkenzeichen (\|) verwenden. Beispiel: EMPLOY(EE\|ER)_ID entspricht EMPLOYEE_ID und EMPLOYER_ID.

Beispiele

^JOB.*(TITLE\|PROFILE\|POSITION)$ gleicht Zeichenfolgen ab, die mit JOB beginnen, gefolgt von null oder mehr Vorkommen eines Zeichens, und auf TITLE, PROFILE oder POSITION enden.

^[A-Z]{3}[0-9]{2}[A-Z0-9]$ gleicht Zeichenfolgen ab, die mit drei Buchstaben beginnen, gefolgt von zwei Ziffern, und mit einem Buchstaben oder einer Ziffer enden.

BIRTH.?(COUNTRY\|PLACE)\|(COUNTRY\|PLACE).*BIRTH entspricht Zeichenfolgen wie BIRTH COUNTRY, PATIENT_BIRTH_PLACE, PLACE_OF_BIRTH und EMPLOYEE'S COUNTRY OF BIRTH.

Verwandte Themen