Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Databricks SQL
Databricks Runtime
Ein regulärer Ausdruck (regex) ist ein Muster, das eine Reihe von Zeichenfolgen beschreibt. Mehrere Azure Databricks SQL-Funktionen und -Operatoren verwenden einen regulären Ausdruck, um Text abzugleichen, zu suchen, zu zählen, zu extrahieren, zu ersetzen oder aufzuteilen:
- Operator "rlike " und "regexp ": Testen Sie, ob eine Zeichenfolge mit einem Muster übereinstimmt.
- regexp_like-Funktion : Testen, ob eine Zeichenfolge mit einem Muster übereinstimmt.
- regexp_count Funktion: Zählen, wie oft ein Muster übereinstimmt.
- regexp_instr Funktion: Gibt die Position der ersten Übereinstimmung zurück.
- regexp_substr Funktion: Gibt die erste übereinstimmende Teilzeichenfolge zurück.
- regexp_extract - und regexp_extract_all funktionen: Zurückgeben einer Erfassungsgruppe aus der ersten Übereinstimmung oder aus allen Übereinstimmungen.
- regexp_replace Funktion: Ersetzen Sie Übereinstimmungen durch eine Ersetzungszeichenfolge.
- split function: Split a string around matches of a pattern.
Die Operatoren "Gefällt mir" und "Gefällt mir" verwenden keine regulären Ausdrücke. Sie verwenden eine einfachere Mustersprache basierend auf _ und %.
Regex-Modul
Azure Databricks wertet reguläre Ausdrücke mithilfe des Java java.util.regex Moduls aus.
Muster müssen Java Syntax regulärer Ausdrücke befolgen, die weitgehend mit regulären Ausdrücken im Perl-Stil kompatibel sind, jedoch in einigen Details unterschiedlich sind.
Die vollständige und autoritative Referenz finden Sie in der Java Pattern Klassendokumentation.
In den folgenden Abschnitten werden die am häufigsten verwendeten Konstrukte beschrieben.
Zeichenklassen
| Bauen | Treffer |
|---|---|
. |
Ein einzelnes Zeichen mit Ausnahme eines Zeilenabschlusszeichens (es sei denn, die s Kennzeichnung ist festgelegt). |
[abc] |
Eines der aufgeführten Zeichen: a, , b, oder c. |
[^abc] |
Jedes einzelne Zeichen, das nichta, boder c. |
[a-z] |
Ein beliebiges Zeichen im Bereich a durch z. |
\d, \D |
Eine Ziffer ([0-9]); \D entspricht keiner Ziffer. |
\w, \W |
Ein Wortzeichen ([a-zA-Z_0-9]); \W entspricht einem beliebigen Nicht-Wort-Zeichen. |
\s, \S |
Leerzeichen; \S entspricht jedem Nicht-Leerzeichen. |
Verankerungen und Grenzen
| Bauen | Treffer |
|---|---|
^ |
Der Anfang der Eingabe (oder einer Zeile mit der m Kennzeichnung). |
$ |
Das Ende der Eingabe (oder einer Zeile mit der m Kennzeichnung). |
\b, \B |
Eine Wortgrenze; \B entspricht einer Nicht-Wort-Grenze. |
Quantifizierer
Quantifizierer geben an, wie oft das vorherige Element übereinstimmen muss.
Standardmäßig sind Quantifizierer gierig und stimmen so weit wie möglich überein. Fügen Sie ? an, um einen Quantifizierer widerwillig zu machen (so wenig wie möglich abzugleichen), z. B .*?. .
| Bauen | Entspricht dem vorherigen Element... |
|---|---|
* |
Null oder mehrere Male. |
+ |
Ein- oder mehrmals. |
? |
Null oder ein Mal. |
{n} |
Genau n mal. |
{n,} |
Mindestens n mal. |
{n,m} |
Zwischen n und m Uhrzeit. |
Gruppen und Änderung
| Bauen | Description |
|---|---|
(...) |
Eine Aufnahmegruppe. Verwenden Sie den Gruppenindex mit regexp_extract. |
(?:...) |
Eine nicht erfassende Gruppe. Gruppen ohne Erfassen der Übereinstimmung. |
a\|b |
Änderung. Gleicht entweder a oder b. |
Inlinekennzeichnungen
Platzieren Sie eine Kennzeichnung am Anfang des Musters, um die Übereinstimmung des gesamten Musters zu ändern.
| Flag | Effect |
|---|---|
(?i) |
Übereinstimmung ohne Berücksichtigung der Groß-/Kleinschreibung. |
(?s) |
Dotall-Modus.
. entspricht Linienterminatoren. |
(?m) |
Mehrzeilenmodus.
^ und $ an Zeilenumbrüchen übereinstimmen. |
(?x) |
Kommentarmodus. Ignoriert nicht gescapete Leerzeichen im Muster. |
Beispiel: (?i)ste(v\|ph)en Übereinstimmungen Steven, , stevenund STEPHEN unabhängig vom Fall.
Escapen und Zeichenfolgenliterale
Zum Abgleichen eines Zeichens, das auch ein regex-Metacharacter ist (z .. B. , *, , (, [oder \), stellen Sie ihm einen umgekehrten Schrägstrich voran.
Entspricht z \. . B. einer Literalperiode und \\ einem literalen umgekehrten Schrägstrich.
Da ein umgekehrter Schrägstrich auch das Escapezeichen in normalen SQL-Zeichenfolgenliteralen ist, müssen Sie jeden umgekehrten Schrägstrich verdoppeln, den Sie an das Regex-Modul übergeben möchten.
Wenn Sie z. B. das Muster \d+ an eine Funktion übergeben möchten, schreiben Sie es wie '\\d+' in einem regulären Zeichenfolgenliteral.
Verwenden Sie ein raw-literal Präfix(r Präfix), das die Vorverarbeitung von Escapezeichen deaktiviert, um dies zu vermeiden.
Schreiben Sie in einem unformatierten Literal das Muster genau so, wie das Regex-Modul es erwartet:
-- Regular string literal: backslashes must be doubled.
> SELECT regexp_substr('item 42 in stock', '\\d+');
42
-- Raw literal: write the pattern as-is.
> SELECT regexp_substr('item 42 in stock', r'\d+');
42
Allgemeine Muster
Die folgenden Muster decken häufige Aufgaben ab. Sie werden als unformatierte Literale geschrieben, sodass umgekehrte Schrägstriche unverändert an das Regex-Modul übergeben werden. Die E-Mail-, URL- und IP-Muster sind absichtlich einfache Illustrationen, keine strengen Validatoren.
| Zielsetzung | Pattern |
|---|---|
| Ganze Zahl, optional signiert | r'-?\d+' |
| Dezimalzahl | r'-?\d+(\.\d+)?' |
| Ein Wort | r'\w+' |
Nur das ganze Wort cat |
r'\bcat\b' |
| E-Mail-Adresse (einfach) | r'[\w.%+-]+@[\w.-]+\.\w{2,}' |
| Hosten in einer URL | r'https?://([^/]+)' |
| IPv4-Adresse (überprüft nicht 0 bis 255) | r'\d{1,3}(\.\d{1,3}){3}' |
ISO-Datum (YYYY-MM-DD) |
r'\d{4}-\d{2}-\d{2}' |
| Führende oder nachfolgende Leerzeichen | r'^\s+\|\s+$' |
| US-Telefonnummer (einfach) | r'\d{3}-\d{3}-\d{4}' |
Word Grenzen (\b) entsprechen einer ganzen word anstelle einer Teilzeichenfolge:
-- 'cat' as a standalone word
> SELECT 'the cat sat on the mat' rlike r'\bcat\b';
true
-- 'cat' only as part of a larger word
> SELECT 'category' rlike r'\bcat\b';
false
Kombinieren Sie ein Literalpräfix mit einem Quantifizierer, um ein strukturiertes Token zu extrahieren, z. B. eine Auftrags-ID:
> SELECT regexp_substr('Ref: ORD-12345 shipped on 2024-03-15', r'ORD-\d+');
ORD-12345
Wählen Sie die richtige Funktion aus.
Verwenden Sie diese Tabelle, um die Funktion zu wählen, die Ihrem Ziel entspricht.
| Sie möchten... | Verwendung |
|---|---|
| Testen Sie, ob eine Zeichenfolge übereinstimmt. | / Gefällt mirRegexp / regexp_like |
| Gibt die erste übereinstimmende Teilzeichenfolge zurück. | regexp_substr |
| Zurückgeben einer Aufnahmegruppe. | regexp_extract |
| Gibt alle Übereinstimmungen zurück. | regexp_extract_all |
| Gibt die Position einer Übereinstimmung zurück. | regexp_instr |
| Zählen Sie die Anzahl der Übereinstimmungen. | regexp_count |
| Ersetzen Sie Übereinstimmungen durch anderen Text. | regexp_replace |
| Teilen Sie eine Zeichenfolge um Übereinstimmungen. | split |
Passen Sie ein einfaches _ / % Muster an. |
mögen / Ilike |