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: |
[^abc] |
Entspricht einem beliebigen Zeichen, mit Ausnahme der in eckigen Klammern angegebenen Zeichen. Beispiel: |
[A-Z0-9] |
Entspricht einem beliebigen Zeichen im durch eckige Klammern angegebenen Bereich. Um einen Bereich anzugeben, fügen Sie einfach das Bindestrichzeichen " Beispiel: |
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: |
X* |
Entspricht null oder mehreren Vorkommen des angegebenen Zeichens oder der angegebenen Zeichengruppe. Beispiel: |
X+ |
Entspricht einem oder mehreren Vorkommen des angegebenen Zeichens oder der angegebenen Zeichengruppe. Beispiel: |
X{n} |
Entspricht dem angegebenen Zeichen oder der Gruppe von Zeichen genau Beispiel: |
X{n,} |
Entspricht dem angegebenen Zeichen oder der angegebenen Zeichengruppe mindestens Beispiel: |
X{n,m} |
Entspricht dem angegebenen Zeichen oder der angegebenen Zeichengruppe mindestens Beispiel: |
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: |
$ |
Entspricht dem angegebenen Zeichen oder der Zeichengruppe am Ende einer Zeichenfolge (endet mit der Suche). Beispiel: |
\b |
Markiert eine Wortbegrenzung. Entspricht dem Zeichen oder der Gruppe von Zeichen, die zwischen einem Paar von Beispiel: |
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.