Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:
Databricks SQL
Databricks Runtime
A regex (regex) egy sztringkészletet leíró minta. Számos Azure Databricks SQL-függvény és operátor egy reguláris kifejezést alkalmaz a szöveg egyeztetéséhez, kereséséhez, megszámlálásához, kinyeréséhez, cseréjéhez vagy felosztásához:
- rlike operátor és regexp operátor: tesztelje, hogy egy sztring megfelel-e egy mintának.
- regexp_like függvény: annak tesztelése, hogy egy sztring megfelel-e egy mintának.
- regexp_count függvény: megszámolja, hogy egy minta hányszor egyezik meg.
- regexp_instr függvény: az első egyezés pozícióját adja vissza.
- regexp_substr függvény: az első egyező részszűrést adja vissza.
- regexp_extract és regexp_extract_all függvények: egy rögzítési csoportot ad vissza az első egyezésből vagy az összes egyezésből.
- regexp_replace függvény: cserélje le a találatokat egy helyettesítő sztringre.
- split függvény: sztring felosztása egy minta egyezései köré.
A hasonló és az ilikeoperátorok nem használnak reguláris kifejezéseket. Egyszerűbb mintanyelvet használnak az és %a _ .
Regex motor
Azure Databricks a Java java.util.regex motorral kiértékeli a reguláris kifejezéseket.
A mintáknak Java reguláris kifejezés szintaxisát kell követnie, amely széles körben kompatibilis a Perl-stílusú reguláris kifejezésekkel, de bizonyos részletekben eltér.
A teljes és mérvadó hivatkozásért tekintse meg az Java Pattern osztály dokumentációját.
A következő szakaszok a leggyakrabban használt szerkezeteket ismertetik.
Karakterosztályok
| Épít | Egyezések |
|---|---|
. |
Bármely karakter, kivéve a vonal-terminátort (kivéve, ha a s jelölő be van állítva). |
[abc] |
A felsorolt karakterek bármelyike: a, bvagy c. |
[^abc] |
Minden olyan karakter, amely nema, bvagy c. |
[a-z] |
A tartomány a bármely karaktere.z |
\d, \D |
A számjegy ([0-9]); \D bármely nem számjegynek megfelelő. |
\w, \W |
Egy szó karakter ([a-zA-Z_0-9]); \W egyezik a nem szó karakterrel. |
\s, \S |
A whitespace karakter; \S egyezik a nem térbeli karakterrel. |
Horgonyok és határok
| Épít | Egyezések |
|---|---|
^ |
A bemenet (vagy a jelölővel ellátott m sor) kezdete. |
$ |
A bemenet vége (vagy egy jelölővel ellátott m sor). |
\b, \B |
Szóhatár; \B nem szóhatárnak felel meg. |
Kvantitátorok
A kvantátorok megadják, hogy az előző elemnek hányszor kell egyeznie.
Alapértelmezés szerint a kvantátorok kapzsiak , és a lehető legnagyobb mértékben egyeznek. Hozzáfűzés ? a kvantálók vonakodásához (a lehető legkisebb egyezéshez), például .*?.
| Épít | Megfelel az előző elemnek... |
|---|---|
* |
Nulla vagy több alkalommal. |
+ |
Egy vagy több alkalommal. |
? |
Nulla vagy egyszer. |
{n} |
Pontosan n az időket. |
{n,} |
Legalább n időnként. |
{n,m} |
Között n és m időpontban. |
Csoportok és váltakozás
| Épít | Description |
|---|---|
(...) |
Egy rögzítési csoport. Használja a csoportindexet regexp_extract. |
(?:...) |
Nem rögzített csoport. Csoportok a találat rögzítése nélkül. |
a\|b |
Váltakozás. Egyezések vagy ab. |
Beágyazott jelzők
Helyezzen egy jelölőt a minta elejére a teljes minta egyeztetésének módosításához.
| Flag | Effect |
|---|---|
(?i) |
Kis- és nagybetűk megkülönböztetése. |
(?s) |
Dotall mód.
. egyezik a sor terminátoraival. |
(?m) |
Többsoros mód.
^ és $ egyezzen a sortörések között. |
(?x) |
Megjegyzések mód. Figyelmen kívül hagyja a nem kibontott szóközt a mintában. |
Például egyezésekSteven(?i)ste(v\|ph)en, stevenés STEPHEN esettől függetlenül.
Menekülés és sztringkonstansok
Ha egy regex metacharacter (például ., *, (, [, vagy \) karaktert is meg szeretne egyezni, akkor azt fordított perjel előzi meg.
Például \. egy literál pontnak felel meg, és \\ egy literális fordított perjelet.
Mivel a fordított perjel a szokásos SQL-sztringkonstansokban is a feloldó karakter, minden olyan fordított perjelet meg kell dupláznia, amelyet át szeretne adni a regex motornak.
Ha például egy függvénynek szeretné átadni a mintát \d+ , írja be '\\d+' egy normál sztringkonstansba.
A kettős menekülés elkerülése érdekében használjon egy raw-literal (r előtag) előtagot, amely letiltja a escape-character előfeldolgozást.
Nyers literálban írja be a mintát pontosan úgy, ahogy a regex motor elvárja:
-- 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
Gyakori minták
Az alábbi minták a gyakori feladatokat fedik le. Nyers literálként vannak megírva, hogy a fordított perjelek változatlanul áthaladjanak a regex motoron. Az e-mail-, URL-cím- és IP-minták szándékosan egyszerű illusztrációk, nem szigorú érvényesítők.
| Célkitűzés | Pattern |
|---|---|
| Egész szám, opcionálisan aláírt | r'-?\d+' |
| Decimális szám | r'-?\d+(\.\d+)?' |
| Egy szó | r'\w+' |
Csak az egész szó cat |
r'\bcat\b' |
| E-mail-cím (egyszerű) | r'[\w.%+-]+@[\w.-]+\.\w{2,}' |
| Gazdagép URL-címben | r'https?://([^/]+)' |
| IPv4-cím (nem ellenőrzi a 0–255-öt) | r'\d{1,3}(\.\d{1,3}){3}' |
ISO-dátum (YYYY-MM-DD) |
r'\d{4}-\d{2}-\d{2}' |
| Kezdő vagy záró szóköz | r'^\s+\|\s+$' |
| Amerikai telefonszám (egyszerű) | r'\d{3}-\d{3}-\d{4}' |
Word határok (\b) egy egész word egyeznek meg ahelyett, hogy alávonást használnak:
-- '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
Konstans előtag és kvantáló kombinálása strukturált jogkivonat, például rendelésazonosító kinyeréséhez:
> SELECT regexp_substr('Ref: ORD-12345 shipped on 2024-03-15', r'ORD-\d+');
ORD-12345
A megfelelő függvény kiválasztása
Ezzel a táblával kiválaszthatja a célnak megfelelő függvényt.
| Azt szeretné, hogy... | Használd |
|---|---|
| Ellenőrizze, hogy egy sztring egyezik-e. | rlike / Regexp / regexp_like |
| Adja vissza az első egyező részstringet. | regexp_substr |
| Rögzítési csoportot ad vissza. | regexp_extract |
| Adja vissza az összes egyezést. | regexp_extract_all |
| Egyezés pozíciójának visszaadása. | regexp_instr |
| Az egyezések számának megszámlálása. | regexp_count |
| Cserélje le a találatokat más szövegre. | regexp_replace |
| Sztring felosztása egyezések köré. | split |
Egyezik egy egyszerű _ / % mintával. |
Mint / ilike |