Freigeben über


Reguläre Ausdrücke

Gilt für: SQL Server 2025 (17.x) Azure SQL-Datenbank Azure SQL Managed InstanceSQL-Datenbank in Microsoft Fabric

In diesem Artikel werden reguläre Ausdrücke für SQL Server vorgestellt.

Ein regulärer Ausdruck oder regex ist eine Abfolge von Zeichen, die ein Suchmuster für Text definieren. Regex wird häufig für eine Vielzahl von Aufgaben verwendet, einschließlich Musterabgleich, Datenüberprüfung, Datentransformation und Abfragen. Es bietet eine flexible und effiziente Möglichkeit zum Suchen, Bearbeiten und Verarbeiten komplexer Datenvorgänge.

Note

Reguläre Ausdrücke sind in der Azure SQL Managed Instance mit der SQL Server 2025 oder Always-up-to-date-Aktualisierungsrichtlinie verfügbar.

Diese Implementierung des regulären Ausdrucks basiert auf der RE2-Bibliothek für reguläre Ausdrücke. Weitere Informationen finden Sie unter RE2 Regular Expression Syntax.

Unterstützte regex-Funktionen:

Function Description
REGEXP_LIKE Gibt einen booleschen Wert zurück, der angibt, ob die Texteingabe mit dem regex-Muster übereinstimmt.
REGEXP_REPLACE Gibt eine geänderte Quellzeichenfolge, die durch eine Ersetzungszeichenfolge ersetzt wird, wobei das Vorkommen des regex-Musters gefunden wurde.
REGEXP_SUBSTR Extrahiert Teile einer Zeichenfolge basierend auf einem Muster für reguläre Ausdrücke.

Gibt das Nth-Vorkommen einer Teilzeichenfolge zurück, die dem regex-Muster entspricht.
REGEXP_INSTR Gibt die Anfangs- oder Endposition der übereinstimmenden Teilzeichenfolge abhängig von der angegebenen Option zurück.
REGEXP_COUNT Gibt die Anzahl der Male zurück, mit denen regex-Muster in einer Zeichenfolge auftritt.
REGEXP_MATCHES Gibt eine Tabelle mit erfassten Teilzeichenfolgen zurück, die einem Muster für reguläre Ausdrücke mit einer Zeichenfolge entsprechen. Wenn keine Übereinstimmung gefunden wird, gibt die Funktion keine Zeile zurück.
REGEXP_SPLIT_TO_TABLE Gibt eine Tabelle mit geteilten Zeichenfolgen zurück, die durch das regex-Muster getrennt ist. Wenn keine Übereinstimmung mit dem Muster vorhanden ist, gibt die Funktion die Zeichenfolge zurück.

Reguläre Ausdrücke können aus Literalzeichen und Metacharactern bestehen, die besondere Bedeutungen und Funktionen aufweisen.

Ein einfacher regulärer Ausdruck ist ein einzelnes Literalzeichen. Zeichen entsprechen sich selbst, mit Ausnahme der Metacharacter. Metacharacter umfassen *, , +, ?, (, , )oder |. Um einem Metacharacter zuzuordnen, escape es mit einem umgekehrten Schrägstrich. Beispielsweise entspricht \* dem Literal-Sternchen (*).

Zwei reguläre Ausdrücke können geändert oder verkettet werden, um einen neuen regulären Ausdruck zu bilden: Wenn e1 mit "s " und "e2 " übereinstimmt, dann " e1 | e2 " mit "s " oder "t" übereinstimmt, und e1e2 mit st.

Die Metacharacter *, +und ? sind Wiederholungsoperatoren: e1* entspricht einer Sequenz von Null oder mehr (möglicherweise unterschiedlichen) Zeichenfolgen, die jeweils mit e1 übereinstimmen; e1 + entspricht einer oder mehreren; e1? gleicht 0 oder 1 ab.

Rangfolge des Operators, von der schwächsten bis zur stärksten Bindung, lautet wie folgt: - Alternation - Verkettung - Wiederholungsoperatoren

Explizite Klammern können verwendet werden, um unterschiedliche Bedeutungen zu erzwingen, wie in arithmetischen Ausdrücken. Einige Beispiele: ab|cd entspricht (ab)|(cd) ; ab entspricht a(b).

Weitere Informationen zur von RE2 akzeptierten Syntax für reguläre Ausdrücke finden Sie unter
Re2 Reguläre Ausdruckssyntax. Auf dieser Seite werden auch einige Syntaxen aufgeführt, die von PCRE, Perl und Vim akzeptiert werden.

Akzeptierte Zeichen für reguläre Ausdrücke

Einzelne Zeichenausdrücke

Varianten von Ausdrücken, die aus einem einzelnen Zeichen bestehen Examples
Alle Zeichen, möglicherweise auch Zeilenvorschub (s=true) .
character class [xyz]
Negierte Zeichenklasse [^xyz]
Perl-Zeichenklassen \d
Negierte Perl-Zeichenklasse \D
ASCII-Zeichenklassen [[:alpha:]]
Negierte ASCII-Zeichenklasse [[:^alpha:]]
Unicode-Zeichenklasse (Name aus nur einem Buchstaben) \pN
Unicode-Zeichenklasse \p{Greek}
Negierte Unicode-Zeichenklasse (Name aus nur einem Buchstaben) \PN
Negierte Unicode-Zeichenklasse \P{Greek}
Verbundwerkstoffe Description
xy x gefolgt von y
x | y x oder y (x bevorzugen)
Wiederholungen Description
x* null oder mehr x, bevorzugen Sie mehr
x+ ein oder mehrere x, bevorzugen Sie mehr
x? 0 oder ein x, lieber eins
x{n,m} n oder n+1 oder ... oder m x, bevorzugen Sie mehr
x{n,} n oder mehr x, bevorzugen Sie mehr
x{n} genau n x
x*? null oder mehr x, bevorzugen weniger
x+? ein oder mehrere x, bevorzugen weniger
x?? null oder ein x, bevorzugen Null
x{n,m}? n oder n+1 oder ... oder m x, weniger bevorzugen
x{n,}? n oder mehr x, bevorzugen weniger
x{n}? genau n x

Note

Die Zählformulare x{n,m}, x{n,}und x{n} ablehnen Formulare, die eine mindeste oder maximale Wiederholungsanzahl über 1.000 erzeugen. Unbegrenzte Wiederholungen unterliegen dieser Einschränkung nicht.

Perl-Zeichenklassen

In der folgenden Tabelle sind derzeit unterstützte Perl-Zeichenklassen aufgeführt.

Perl-Zeichenklassen (alle nur in ASCII-Format) Description
\d Ziffern ( [0-9])
\D keine Ziffern ( [^0-9])
\s Leerzeichen ( [\t\n\f\r ])
\S keine Leerzeichen ( [^\t\n\f\r ])
\w Wortzeichen ( [0-9A-Za-z_])
\W keine Wortzeichen ( [^0-9A-Za-z_])

ASCII-Zeichenklassen

In der folgenden Tabelle sind derzeit unterstützte ASCII-Zeichenklassen aufgeführt.

ASCII-Zeichenklassen Description
[[:alnum:]] alphanumerisch ( [0-9A-Za-z])
[[:alpha:]] Alphabetisch ( [A-Za-z])
[[:ascii:]] ASCII ( [\x00-\x7F])
[[:blank:]] Blank ( [\t ])
[[:cntrl:]] Kontrolle ( [\x00-\x1F\x7F])
[[:digit:]] Ziffern ( [0-9])
[[:graph:]] grafische ( [!-~] oder [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])
[[:lower:]] Kleinbuchstabe ( [a-z])
[[:print:]] druckbar ( [ -~] oder [ [:graph:]])
[[:punct:]] Interpunktion ( [!-/:-@[-\``{-~])
[[:space:]] Leerzeichen ( [\t\n\v\f\r ])
[[:upper:]] Großschreibung ( [A-Z])
[[:word:]] Wortzeichen ( [0-9A-Za-z_])
[[:xdigit:]] Hexziffer ( [0-9A-Fa-f])

Literalzeichen

  • Letters
  • Numbers
  • Symbols

Leere Zeichenfolgen

Leere Zeichenfolgen Description
^ Am Anfang von Text oder Zeile (m=true)
$ Am Ende des Texts (wie \z, nicht \Z) oder Zeile (m=true)
\A Am Anfang des Texts
\b Bei ASCII-Wortgrenze (\w auf einer Seite und \W, \Aoder \z auf der anderen Seite)
\B Nicht bei ASCII-Wortgrenze
\z Am Ende des Texts

Groupings

Die Aufnahmegruppe (Unterausdruck) des Musters mit:

Grouping Description
(re) Nummerierte Erfassungsgruppe (Unterübereinstimmung)
(?P<name>re) Benannte und nummerierte Erfassungsgruppe (Unterübereinstimmung)
(?:re) Gruppe ohne Erfassung
(?<flags>) Innerhalb der aktuellen Gruppe festlegen <flags> ; nicht erfassen
(?<flags>:re) Festlegen <flags> während re; nicht erfassende Gruppierung

Flags

Verwenden Sie Flags, um das Ausdrucksverhalten zu ändern. Beispiel:

Flag Description
i Groß-/Kleinschreibung wird nicht beachtet (Standard false)
m Mehrzeiligen Modus: ^ und $ Zuordnen der Anfangs-/Endzeile zusätzlich zum Anfangs-/Endtext (Standard false)
s Übereinstimmung . zulassen \n (Standardfalse)
c Groß-/Kleinschreibung beachten (Standard true)

Diese Implementierung unterstützt den POSIX-Standard regulärer Ausdrücke basierend auf RE2 und bietet Unterstützung für die PCRE/PCRE2-Variante der regulären Ausdrückesyntax, die mit den meisten modernen Engines und Tools für reguläre Ausdrücke kompatibel ist. Es gibt verschiedene Varianten regulärer Ausdrücke, z. B. POSIX, ANSI, Perl und PCRE, die unterschiedliche Syntax und Features aufweisen. Weitere Informationen zu unterstützten Konstrukten und Verhalten des zugrunde liegenden Regex-Moduls finden Sie unter RE2, einer Bibliothek für reguläre Ausdrücke.

Note

Die Übereinstimmung von regulären Ausdrücken in SQL Server berücksichtigt nicht SQL-Kollationen für linguistischen Vergleichen. Dieses Verhalten ist so vorgesehen und konsistent mit den meisten regulären Ausdrucksmotoren, da die Übereinstimmung auf dem Muster und den Unicode-Zeicheneigenschaften basiert und nicht auf Sortierungsregeln. Daher kann dies zu Verhaltensunterschieden im Vergleich zu anderen Zeichenfolgenvergleichsfunktionen wie LIKE führen, insbesondere bei indizierten Spalten mit sprachspezifischen Sortierungen.

Requirements

  • Ein SQL-Clienttool, z. B. Azure Data Studio, SQL Server Management Studio oder Visual Studio Code.
  • Grundlegende Kenntnisse der SQL-Syntax und -Abfragen.
  • Grundlegendes Verständnis der Syntax und Konzepte regulärer Ausdrücke.

FAQ

Welchen Einfluss hat die Verwendung von Regex auf die Performance?

Regex-Abfragen können sich je nach Komplexität des Regex-Musters, der Größe der Textdaten und der Anzahl der beteiligten Zeilen auf die Leistung auswirken. Sie können den Ausführungsplan und die Statistik verwenden, um die Leistung Ihrer regex-Abfragen zu überwachen und zu optimieren.

Einschränkungen

Die folgenden Elemente werden derzeit nicht unterstützt:

  • Lob-Datentypen (varchar(max) oder nvarchar(max)) string_expressions werden in den folgenden systeminternen Funktionen unterstützt:
    • REGEXP_LIKE
    • REGEXP_COUNT
    • REGEXP_INSTR

Diese Unterstützung ist jedoch auf Eingabegrößen von bis zu 2 MB beschränkt.

  • LOB-Datentypen werden in den folgenden Regex-Funktionen nicht unterstützt:

    • REGEXP_REPLACE
    • REGEXP_SUBSTR
    • REGEXP_MATCHES
    • REGEXP_SPLIT_TO_TABLE
  • Reguläre Ausdrucksfunktionen werden in nativ kompilierten gespeicherten Prozeduren nicht unterstützt.