Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Sprachelemente » Ausdrücke

 

Syntax für reguläre Ausdrücke

Reguläre Ausdrücke werden mit den Suchbedingungen SIMILAR TO und REGEXP sowie mit der Funktion REGEXP_SUBSTR unterstützt. Für SIMILAR TO stimmt die Syntax für reguläre Ausdrücke mit dem ANSI/ISO SQL-Standard überein. Für REGEXP und REGEXP_SUBSTR stimmen die Syntax und die Unterstützung mit Perl 5 überein.

Reguläre Ausdrücke werden von REGEXP und SIMILAR TO verwendet, um eine Zeichenfolge zu suchen, während reguläre Ausdrücke von REGEXP_SUBSTR verwendet werden, um eine Teilzeichenfolge zu suchen. Um das Teilzeichenfolgenverhalten für REGEXP und SIMILAR TO zu erreichen, können Sie auf beiden Seiten des gesuchten Musters Wildcard-Zeichen (Platzhalter) einfügen. Beispiel: REGEXP '.*car.*' findet car, carwash und vicar. Sie können Ihre Abfrage auch so schreiben, dass sie die Funktion REGEXP_SUBSTR verwendet. Weitere Hinweise finden Sie unter REGEXP_SUBSTR-Funktion [Zeichenfolge].

Die Suche mit regulären Ausdrücken in SIMILAR TO unterscheidet nicht zwischen Groß- und Kleinschreibung. REGEXP und REGEXP_SUBSTR werden durch die Berücksichtigung von Groß- und Kleinschreibung oder von Akzenten in der Datenbank nicht beeinflusst. Weitere Hinweise finden Sie unter Unterschiede im Zeichenvergleich von LIKE, REGEXP und SIMILAR TO.

Reguläre Ausdrücke: Metazeichen

Metazeichen sind Symbole oder Zeichen, die in einem regulären Ausdruck eine besondere Bedeutung haben.

Die Verarbeitung von Metazeichen kann unterschiedlich sein:

  • Je nachdem, ob der reguläre Ausdruck mit den Suchbedingungen SIMILAR TO oder REGEXP bzw. der Funktion REGEXP_SUBSTR verwendet wird.

  • Abhängig davon, ob das Metazeichen sich in einer Zeichenklasse des regulären Ausdrucks befindet.

Bevor Sie fortfahren, sollten Sie sich die Definition einer Zeichenklasse vergegenwärtigen. Eine Zeichenklasse ist eine Zeichenmenge in eckigen Klammern, mit denen eine Übereinstimmung in einer Zeichenfolge gesucht wird. In der Syntax SIMILAR TO 'ab[1-9]' ist [1-9] beispielsweise eine Zeichenklasse und passt zu einer Ziffer im Bereich 1 bis 9. Die Verarbeitung von Metazeichen in einem regulären Ausdruck kann verschieden sein, je nachdem, ob das Metazeichen in einer Zeichenklasse enthalten ist oder nicht. Insbesondere werden die meisten Metazeichen als reguläre Zeichen behandelt, wenn sie in einer Zeichenklasse enthalten sind.

Nur bei SIMILAR TO müssen die Metazeichen *, ?, +, _, |, (, ), { in einer Zeichenklasse mit einem Escapezeichen versehen sein.

Um ein literales Minuszeichen (-), ein Einschaltungszeichen (^) oder eine rechte eckige Klammer (]) in eine Zeichenklasse einzubeziehen, müssen Sie davor ein Escapezeichen setzen.

Eine Liste der unterstützten Metazeichen für reguläre Ausdrücke finden Sie nachstehend. Fast alle Metazeichen werden von SIMILAR TO, REGEXP und REGEXP_SUBSTR auf identische Weise behandelt:

Zeichen Zusätzliche Informationen
[ und ]

Geöffnete und geschlossene eckige Klammern werden benutzt um eine Zeichenklasse anzugeben. Eine Zeichenklasse ist eine Teilmenge von Zeichen, die als Suchmuster dient.

Mit Ausnahme des Bindestrichs (-) und des Einschaltungszeichens (^) haben Metazeichen und Quantifizierer (wie * und {m}), die in einer Zeichenklasse angegeben werden, keine besondere Bedeutung und werden als normale Zeichen behandelt.

SQL Anywhere unterstützt auch Teilzeichenklassen wie die POSIX-Zeichenklassen. Weitere Hinweise finden Sie unter Reguläre Ausdrücke: Spezielle Teilzeichenklassen.

* Das Sternchen kann benutzt werden, um in einem Suchmuster ein Zeichen 0 oder mehr Mal darzustellen. Beispiel: REGEXP '.*abc' sucht eine Zeichenfolge, die mit abc endet und mit einem beliebigen Präfix beginnt. Daher werden aabc, xyzabc und abc gefunden, nicht aber bc und abcc.
? Das Fragezeichen kann benutzt werden, um in einem Suchmuster ein Zeichen 0 oder 1 Mal darzustellen. Beispiel: 'colou?r' findet color und colour.
+ Das Pluszeichen kann benutzt werden, um in einem Suchmuster ein Zeichen 1 oder mehr Mal darzustellen. Beispiel: 'bre+' findet bre und bree, aber nicht br.
-

Ein Bindestrich kann in einer Zeichenklasse benutzt werden, um einen Bereich darzustellen. Beispiel: REGEXP '[a-e]' findet a, b, c, d und e.

Weitere Hinweise zur Interpretation von Bereichen durch REGEXP und SIMILAR TO finden Sie unter Unterschiede im Zeichenvergleich von LIKE, REGEXP und SIMILAR TO.

%

Das Prozentzeichen kann mit SIMILAR TO verwendet werden, um eine beliebige Anzahl von Zeichen darzustellen.

Das Prozentzeichen wird für REGEXP und REGEXP_SUBSTR nicht als Metazeichen interpretiert. Wenn es angegeben wird, findet es ein Prozentzeichen (%).

_ (Unterstrich)

Der Unterstrich kann mit SIMILAR TO verwendet werden, um ein einzelnes Zeichen zu finden.

Der Unterstrich wird für REGEXP und REGEXP_SUBSTR nicht als Metazeichen interpretiert. Wenn er angegeben wird, findet er einen Unterstrich (_).

|

Der Senkrechtstrich wird verwendet, um alternative Suchmuster anzugeben. In einer Zeichenfolge von Suchmustern, die durch einen Senkrechtstrich getrennt sind, wird der Senkrechtstrich als OR interpretiert und die Suche hält beim ersten Treffer beginnend beim äußerst linken Suchmuster an. Daher müssen Sie die Muster in absteigender Prioritätsreihenfolge eingeben. Sie können eine unbegrenzte Anzahl alternativer Suchmuster eingeben.

( und ) Geöffnete und geschlossene runde Klammern sind Metazeichen, wenn sie zum Gruppieren von Teilen eines regulären Ausdrucks verwendet werden. Beispiel: (ab)* findet null oder mehr Wiederholungen von ab. Wie bei mathematischen Ausdrücken können Sie die Gruppierung verwenden, um die Reihenfolge zu bestimmen, in der die Teile eines regulären Ausdrucks ausgewertet werden.
{ und }

Geöffnete und geschlossene geschweifte Klammern sind Metazeichen, wenn Sie zur Angabe von Quantifizierern verwendet werden. Quantifizierer geben an, wie oft sich ein Suchmuster wiederholen muss, um ein Treffer zu sein. Zum Beispiel:

  • {m}   Findet ein Zeichen genau m Mal. Beispiel: '519-[0-9]{3}-[0-9]{4}' findet eine Telefonnummer mit der Vorwahl 519 (wenn die Daten so formatiert sind wie in der Syntax vorgegeben).

  • {m,}   Findet ein Zeichen mindestens m Mal. Beispiel: '[0-9]{5,}' findet jede Zeichenfolge mit fünf oder mehr Ziffern.

  • {m,n}   Findet ein Zeichen mindestens m Mal, aber nicht mehr als n Mal. Beispiel: SIMILAR TO '_{5,10}' findet jede Zeichenfolge mit 5 bis 10 Zeichen.

\ Der Backslash wird als Escapezeichen für Metazeichen benutzt. Er kann auch als Escapezeichen für Zeichen benutzt werden, die keine Metazeichen sind.
^

Wenn sich bei REGEXP und REGEXP_SUBSTR ein Einschaltungszeichen außerhalb einer Zeichenklasse befindet, findet das Einschaltungszeichen den Beginn einer Zeichenfolge. Beispiel: '^[hc]at' findet hat und cat, aber nur am Beginn der Zeichenfolge.

Wenn es innerhalb einer Zeichenklasse verwendet wird, gilt das nachstehende Verhalten:

  • REGEXP und REGEXP_SUBSTR   Wenn das Einschaltungszeichen das erste Zeichen in einer Zeichenklasse ist, findet es alle Zeichen außer denen in der Zeichenklasse. Beispiel: REGEXP '[^abc]' findet jedes Zeichen außer a, b oder c.

    Wenn das Einschaltungszeichen nicht das erste Zeichen innerhalb der eckigen Klammern ist, findet es Einschaltungszeichen. Beispiel: REGEXP_SUBSTR '[a-e^c]' findet a, b, c, d, e und ^.

  • SIMILAR TO   Bei SIMILAR TO wird das Einschaltungszeichen als Subtraktionsoperator verarbeitet. Beispiel: SIMILAR TO '[a-e^c]' findet a, b, d und e.

$

Wenn das Dollarzeichen mit REGEXP und REGEXP_SUBSTR verwendet wird, findet es das Ende einer Zeichenfolge. Beispiel: SIMILAR TO 'cat$' findet cat, aber nicht catfish.

Wenn es mit SIMILAR TO verwendet wird, findet es ein Fragezeichen.

.

Wenn das Punktzeichen mit REGEXP und REGEXP_SUBSTR verwendet wird, findet es jedes einzelne Zeichen. Beispiel: REGEXP 'a.cd' findet jede Zeichenfolge mit vier Zeichen, die mit a beginnt und mit cd endet.

Wenn es mit SIMILAR TO verwendet wird, findet es einen Punkt (.).

:

Der Doppelpunkt wird in einer Zeichenklasse verwendet, um eine Teilzeichenklasse zu finden. Zum Beispiel, '[[:alnum:]]'.

Reguläre Ausdrücke: Spezielle Teilzeichenklassen

Teilzeichenklassen sind spezielle Zeichenklassen, die in eine größere Zeichenklasse eingebettet sind. Zusätzlich zu benutzerdefinierten Zeichenklassen, bei denen Sie die Zeichenmenge definieren, mit denen eine Übereinstimmung gesucht wird (z.B. beschränkt [abxq4] die Menge der übereinstimmenden Zeichen auf a, b, x, q und 4), unterstützt SQL Anywhere auch Teilzeichenklassen wie etwa die meisten POSIX-Zeichenklassen. Beispiel: [[:alpha:]] stellt die Menge aller Groß- und Kleinbuchstaben dar.

Die Suchbedingung REGEXP und die Funktion REGEXP_SUBSTR unterstützen alle Syntaxkonventionen in der nachstehenden Tabelle, die Suchbedingung SIMILAR TO hingegen nicht. Konventionen, die von SIMILAR TO unterstützt werden, sind durch ein "J" in der Spalte SIMILAR TO gekennzeichnet.

In REGEXP und bei der Verwendung der REGEXP_SUBSTR-Funktion können Teilzeichenklassen mit einem Einschaltungszeichen negiert werden. Beispiel: [[:^alpha:]] findet die Menge aller Zeichen mit Ausnahme der Buchstaben.

Teilzeichenklasse Zusätzliche Informationen SIMILAR TO
[:alpha:]

Findet Buchstabenzeichen in Groß- und Kleinschreibung in der aktuellen Kollatierung. Beispiel: '[0-9]{3}[[:alpha:]]{2}' findet drei Ziffern, gefolgt von zwei Buchstaben.

Ja
[:alnum:]

Findet Ziffern und Buchstabenzeichen in Groß- und Kleinschreibung in der aktuellen Kollatierung. Beispiel: '[[:alnum:]]+' findet eine Zeichenfolge mit mindestens einem Buchstaben und Ziffern.

Ja
[:digit:]

Findet Ziffern in der aktuellen Kollatierung. Beispiel: '[[:digit:]-]+' findet eine Zeichenfolge mit mindestens einer Ziffer oder Bindestrichen. Und '[^[:digit:]-]+' findet eine Zeichenfolge mit mindestens einem Zeichen, das weder eine Ziffer noch ein Bindestrich ist.

Ja
[:lower:]

Findet Buchstaben in Kleinschreibung in der aktuellen Kollatierung. Beispiel: '[[:lower:]]' findet A nicht, weil A ein Großbuchstabe ist.

Ja
[:space:]

Findet ein einzelnes Leerzeichen (' '). Beispiel: Die folgende Anweisung sucht in Contacts.City nach einer Stadt mit einem Namen aus zwei Wörtern:

SELECT City 
FROM Contacts
WHERE City REGEXP '.*[[:space:]].*';
Ja
[:upper:]

Findet Buchstaben in Großschreibung in der aktuellen Kollatierung. Beispiel: '[[:upper:]ab]' findet einen Großbuchstaben, a oder b.

Ja
[:whitespace:]

Findet eine Leerstelle wie ein Leerzeichen, Tabulatorzeichen, Zeilenvorschubzeichen und Wagenrücklaufzeichen.

Ja
[:ascii:]

Findet jedes 7-Bit-ASCII-Zeichen (Ordinalwert zwischen 0 und 127).

[:blank:]

Findet ein Leerzeichen oder einen horizontalen Tabulator.

[[:blank:]] ist gleichwertig zu [ \t].

[:cntrl:]

Findet ASCII-Zeichen mit einem Ordinalwert unter 32 oder Zeichenwert 127 (Steuerzeichen). Steuerzeichen sind Neue Zeile, Formularvorschub, Rückschritt, etc..

[:graph:]

Findet druckbare Zeichen.

[[:graph:]] ist gleichwertig zu [[:alnum:][:punct:]].

[:print:]

Findet druckbare Zeichen und Leerstellen.

[[:print:]] ist gleichwertig zu [[:graph:][:whitespace:]].

[:punct:]

Findet eines der folgenden Zeichen: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~.

In der Teilzeichenklasse [:punct:] sind möglicherweise bestimmte Nicht-ASCII-Satzzeichen, die in der aktuellen Kollatierung verfügbar sind, nicht enthalten.

[:word:]

Findet Buchstaben, Ziffern oder Unterstriche in der aktuellen Kollatierung.

[[:word:]] ist gleichwertig zu [[:alnum:]_].

[:xdigit:]

Findet ein Zeichen, das in der Zeichenklasse [0-9A-Fa-f] ist.

Reguläre Ausdrücke: Andere unterstützte Syntaxkonventionen

Die folgenden Syntaxkonventionen werden von der Suchbedingung REGEXP und der Funktion REGEXP_SUBSTR unterstützt und setzen voraus, dass der Backslash das Escapezeichen ist. Diese Konventionen werden vom Suchausdruck SIMILAR TO nicht unterstützt .

Syntax des regulären Ausdrucks Name und Bedeutung
\0xxx

Findet das Zeichen, dessen Wert \0xxx ist, wobei xxx eine Abfolge von Oktalzeichen und 0 die Ziffer Null ist. Beispiel: \0134 findet einen Backslash.

\a

Findet das Klingelzeichen.

\A

Wenn es außerhalb des Zeichensatzes verwendet wird, findet es den Beginn einer Zeichenfolge.

Entspricht der Verwendung von ^ außerhalb eines Zeichensatzes.

\b

Findet ein Rückschittzeichen.

\B

Findet ein Backslash-Zeichen (\).

\cX

Findet ein benanntes Steuerzeichen. Beispiel: \cZ für Strg-Z.

\d

Findet eine Ziffer in der aktuellen Kollatierung. Beispiel: Die nachstehende Anweisung sucht in Contacts.Phone alle Telefonnummern, die mit 00 enden:

SELECT Surname, Surname, City, Phone
   FROM Contacts
   WHERE Phone REGEXP '\\d{8}00';

\d kann sowohl innerhalb als auch außerhalb von Zeichenklassen verwendet werden und ist gleichwertig mit [[:digit:]].

\D

Findet alles, was keine Ziffer ist. Dies ist das Gegenteil von \d.

\D kann sowohl innerhalb als auch außerhalb von Zeichenklassen verwendet werden und ist gleichwertig mit [^[:digit:]].

Bei der Verwendung von Kurzzeichen innerhalb von eckigen Klammern ist Vorsicht geboten. [\D\S] ist nicht dasselbe wie [^\d\s]. Der zweite Ausdruck findet jedes Zeichen, das keine Ziffer oder Leerstelle ist. Also findet er x, aber nicht 8. Der erste Ausdruck hingegen findet jedes Zeichen, das entweder keine Ziffer oder kein Leerzeichen ist. Da eine Ziffer kein Leerzeichen ist, und ein Leerzeichen keine Ziffer, findet [\D\S] jedes Zeichen: Ziffern, Leerzeichen oder andere.

\e

Findet das Escapezeichen.

\E

Beendet die Verarbeitung von Metazeichen als Nicht-Metazeichen, eingeleitet durch \Q.

Eine Liste der Metazeichen für reguläre Ausdrücke finden Sie unter Reguläre Ausdrücke: Metazeichen.

\f

Findet ein Formularvorschub-Zeichen.

\n

Findet eine Zeilenendmarke.

\Q

Behandelt alle Metazeichen als Nicht-Metazeichen, bis \E angetroffen wird. Beispiel: \Q[$\E entspricht \[\$.

Eine Liste der Metazeichen für reguläre Ausdrücke finden Sie unter Reguläre Ausdrücke: Metazeichen.

\r

Findet ein Wagenrücklauf-Zeichen (CR).

\s

Findet eine Leerstelle oder ein als Leerzeichen behandeltes Zeichen. Beispiel: Die folgende Anweisung gibt alle Produktnamen aus Products.ProductName zurück, die mindestens eine Leerstelle im Namen haben:

SELECT Name 
FROM Products
WHERE Name REGEXP '.*\\s.*'

\s kann sowohl innerhalb als auch außerhalb von Zeichenklassen verwendet werden und ist [[:whitespace:]] gleichwertig . Weitere Hinweise finden Sie unter Reguläre Ausdrücke: Spezielle Teilzeichenklassen.

\S

Findet ein Zeichen, das kein Leerzeichen ist. Dies ist das Gegenteil von \s und [^[:whitespace:]] gleichwertig.

\S kann sowohl innerhalb als auch außerhalb von Zeichenklassen verwendet werden. Weitere Hinweise finden Sie unter Reguläre Ausdrücke: Spezielle Teilzeichenklassen.

Bei der Verwendung von Kurzzeichen innerhalb von eckigen Klammern ist Vorsicht geboten. [\D\S] ist nicht dasselbe wie [^\d\s]. Der zweite Ausdruck findet jedes Zeichen, das keine Ziffer oder Leerstelle ist. Also findet er x, aber nicht 8. Der erste Ausdruck hingegen findet jedes Zeichen, das entweder keine Ziffer oder kein Leerzeichen ist. Da eine Ziffer kein Leerzeichen ist, und ein Leerzeichen keine Ziffer, findet [\D\S] jedes Zeichen: Ziffern, Leerzeichen oder andere.

\t

Findet einen horizontalen Tabulator.

\v

Findet einen vertikalen Tabulator.

\w

Findet ein Buchstabenzeichen, ein Ziffernzeichen oder einen Unterstrich in der aktuellen Kollatierung. Beispiel: Die folgende Anweisung gibt alle Nachnamen aus Contacts.Surname zurück, die genau sieben alphanumerische Zeichen lang sind:

SELECT Surname 
FROM Contacts 
WHERE Surname REGEXP '\\w{7}';

\w kann sowohl innerhalb als auch außerhalb von Zeichenklassen verwendet werden. Weitere Hinweise finden Sie unter Reguläre Ausdrücke: Spezielle Teilzeichenklassen.

Entspricht [[:alnum:]_]..

\W

Findet alle Zeichen außer Buchstabenzeichen, Ziffernzeichen oder Unterstrichen in der aktuellen Kollatierung. Dies ist das Gegenteil von \w und [^[:alnum:]_] gleichwertig .

Dieser reguläre Ausdruck kann sowohl innerhalb als auch außerhalb von Zeichenklassen verwendet werden. Weitere Hinweise finden Sie unter Reguläre Ausdrücke: Spezielle Teilzeichenklassen.

\xhh

Findet das Zeichen, dessen Wert 0xhh ist, wobei hh maximal zwei hexadezimale Zeichen sein können. Beispiel: \x2D entspricht dem Bindestrich.

Entspricht \x{hh}.

\x{hhh}

Findet das Zeichen, dessen Wert 0xhhh ist, wobei hhh maximal drei hexadezimale Zeichen sein können.

\z und \Z

Findet die Position (nicht das Zeichen) am Ende der Zeichenfolge.

Entspricht $.

Reguläre Ausdrücke: Assertierung

Mit Assertierungen testen Sie, ob eine Bedingung wahr ist, und bestimmen die Position in der Zeichenfolge, an der die Übereinstimmungssuche beginnt. Assertierungen geben keine Zeichen zurück, da das Assertierungsmuster in der Fundstelle nicht enthalten ist. Assertierungen werden von der Suchbedingung REGEXP und der REGEXP_SUBSTR-Funktion unterstützt. Diese Konventionen werden vom Suchausdruck SIMILAR TO nicht unterstützt .

Die Assertierungen "Lookahead" und "Lookbehind" können bei REGEXP_SUBSTR nützlich sein, wenn Sie versuchen, eine Zeichenfolge aufzuteilen. So können Sie beispielsweise die Liste der Straßen (ohne Hausnummern) in der Address-Spalte der Customers-Tabelle zurückgeben, indem Sie folgende Anweisung ausführen:

SELECT REGEXP_SUBSTR( Street, '(?<=^\\S+\\s+).*$' ) 
FROM Customers;

Ein anderes Beispiel: Sie können einen regulären Ausdruck verwenden, um zu prüfen, ob ein Kennwort bestimmten Regeln entspricht. Verwenden Sie eine Assertierung mit Nullbreite in der folgenden Form:

IF Kennwort REGEXP '(?=.*[[:digit:]])(?=.*[[:alpha:]].*[[:alpha:]])[[:word:]]{4,12}' 
   MESSAGE 'Password conforms' TO CLIENT;
ELSE
   MESSAGE 'Password does not conform' TO CLIENT;
END IF

Das Kennwort ist gültig, wenn folgende Bedingungen zutreffen:

  • Das Kennwort hat mindestens eine Stelle (positive Assertierung der Nullbreite mit [[:digit:]])

  • Das Kennwort hat mindestens zwei Buchstaben (positive Assertierung der Nullbreite mit [[:alpha:]].*[[:alpha:]])

  • Das Kennwort enthält nur alphanumerische Zeichen oder Unterstriche ([[:word:]])

  • Das Kennwort ist mindestens 4 Zeichen und höchstens 12 Zeichen lang ({4,12})

Die nachstehende Tabelle enthält die von SQL Anywhere unterstützten Assertierungen:

Syntax Bedeutung
(?=Muster)

Positive Lookahead-Assertierung mit Nullbreite   Prüft, ob auf die aktuelle Position in der Zeichenfolge unmittelbar ein Muster folgt, ohne dass Muster Teil der Vergleichszeichenfolge wird. 'A(?=B)' prüft ein A, dem ein B folgt, ohne dass B Teil des Suchmusters wird.

Beispiel: SELECT REGEXP_SUBSTR( 'in new york city', 'new(?=\\syork)'); gibt die Teilzeichenfolge "new" zurück, da unmittelbar darauf " york" folgt (beachten Sie das Leerzeichen vor york).

(?!Muster)

Negative Lookahead-Assertierung mit Nullbreite   Prüft, ob auf die aktuelle Position in der Zeichenfolge nicht unmittelbar ein Muster folgt, ohne dass Muster Teil der Vergleichszeichenfolge wird. Daher gilt: 'A(?!B)' findet ein A, auf das nicht ein B folgt.

Beispiel: SELECT REGEXP_SUBSTR('new jersey', 'new(?!\\syork)'); gibt die Teilzeichenfolge "new" zurück.

(?<=Muster)

Positive Lookbehind-Assertierung mit Nullbreite   Prüft, ob vor der aktuellen Position in der Zeichenfolge unmittelbar ein Muster steht, ohne dass Muster Teil der Vergleichszeichenfolge wird. Daher gilt: '(?<=A)B' findet ein B, vor dem unmittelbar ein A steht, ohne dass A Bestandteil des Suchmusters wird.

Beispiel: SELECT REGEXP_SUBSTR('new york', '(?<=new\\s)york'); gibt die Teilzeichenfolge "york" zurück.

(?<!Muster)

Negative Lookbehind-Assertierung mit Nullbreite   Prüft, ob vor der aktuellen Position in der Zeichenfolge nicht unmittelbar ein Muster steht, ohne dass Muster Teil der Vergleichszeichenfolge wird.

Beispiel: SELECT REGEXP_SUBSTR('about york', '(?<!new\\s)york'); gibt die Teilzeichenfolge "york" zurück.

(?>Muster)

Possessiver lokaler Unterausdruck   Findet nur das größte Präfix der restlichen Zeichenfolge, das mit Muster übereinstimmt

Beispiel: In 'aa' REGEXP '(?>a*)a', (?>a*) wird das aa gefunden (und verbraucht), nie aber nur das vorstehende a. Daher wird 'aa' REGEXP '(?>a*)a' mit FALSE ausgewertet.

(?:Muster)

Nicht-erfassender Block   Diese Funktionalität entspricht einfach dem Muster und wird aus Kompatibilitätsgründen bereitgestellt.

Beispiel: In 'bb' REGEXP '(?:b*)b', (?:b*) wird bb gefunden (und verbraucht). Hingegen wird, anders als beim possessiven lokalen Unterausdruck, das letzte b in bb aufgegeben, damit die gesamte Übereinstimmung erfolgreich gefunden wird (das heißt, dass die Übereinstimmung mit b außerhalb des nicht-erfassenden Blocks gefunden werden kann).

Analog findet 'a(?:bc|b)c' abcc und abc. Beim Finden der Übereinstimmung mit abc wird eine Rückverfolgung des letzten c in bc vorgenommen, damit das c außerhalb der Gruppe benutzt werden kann, um die Suche erfolgreich durchzuführen.

(?#Text)

Wird für Kommentare benutzt. Der Inhalt von Text wird ignoriert.

Siehe auch