Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks SQL
Databricks Runtime
Regulární výraz (regex) je vzor, který popisuje sadu řetězců. Několik Azure Databricks funkcí a operátorů SQL bere regulární výraz tak, aby odpovídal, vyhledaly, vyhledaly, extrahovali, nahradili nebo rozdělili text:
- rlike – operátor a operátor regexp : Otestujte, zda řetězec odpovídá vzoru.
- regexp_like funkce: Otestujte, jestli řetězec odpovídá vzoru.
- regexp_count funkce: spočítejte, kolikrát se vzor shoduje.
- regexp_instr funkce: vrátí pozici první shody.
- regexp_substr funkce: vrátí první odpovídající podřetěc.
- regexp_extract a regexp_extract_all funkce: vrátí skupinu zachycení z první shody nebo ze všech shod.
- regexp_replace funkce: Nahraďte shody náhradním řetězcem.
- split function: rozdělte řetězec kolem shod vzoru.
Operátory like a ilikenepoužívají regulární výrazy. Používají jednodušší jazyk vzorů založený na _ jazyce a %.
Modul Regulárních výrazů
Azure Databricks vyhodnotí regulární výrazy pomocí modulu Javajava.util.regex.
Vzory musí dodržovat Java syntaxi regulárního výrazu, která je široce kompatibilní s regulárními výrazy ve stylu Perl, ale v některých podrobnostech se liší.
Úplný a autoritativní odkaz najdete v dokumentaci ke Java Pattern třídě.
Následující části popisují nejčastěji používané konstrukce.
Třídy znaků
| Vytvořit | Shody |
|---|---|
. |
Libovolný jeden znak s výjimkou ukončovače řádku (pokud s není nastaven příznak). |
[abc] |
Libovolný z uvedených znaků: a, bnebo c. |
[^abc] |
Libovolný jediný znak, který nenía, bnebo c. |
[a-z] |
Libovolný znak v rozsahu a až z. |
\d, \D |
Číslice ([0-9]); \D odpovídá libovolné neciferné číslici. |
\w, \W |
Znak slova ([a-zA-Z_0-9]); \W odpovídá libovolnému neslovně danému znaku. |
\s, \S |
Prázdný znak; \S odpovídá jakémukoli jinému než prázdnému znaku. |
Ukotvení a hranice
| Vytvořit | Shody |
|---|---|
^ |
Začátek vstupu (nebo řádku s příznakem m ). |
$ |
Konec vstupu (nebo řádku s příznakem m ). |
\b, \B |
Hranice slova; \B odpovídá neslovné hranici. |
Kvantifikátory
Kvantifikátory určují, kolikrát se musí předchozí prvek shodovat.
Ve výchozím nastavení jsou kvantifikátory greedy a co nejvíce odpovídají. Připojte ? k tomu, aby se kvantifikátor zdráhal (co nejméně), například .*?.
| Vytvořit | Odpovídá předchozímu prvku... |
|---|---|
* |
Nula nebo vícekrát. |
+ |
Jednou nebo vícekrát. |
? |
Nula nebo jednou. |
{n} |
Přesně n časy. |
{n,} |
Alespoň n jednou. |
{n,m} |
Mezi n a m časy. |
Skupiny a alternace
| Vytvořit | Description |
|---|---|
(...) |
Zachytávání skupiny. Použijte index skupiny s regexp_extract. |
(?:...) |
Skupina, která se nezachytává. Skupiny bez zachycení shody. |
a\|b |
Střídání. Odpovídá buď a nebo b. |
Vložené příznaky
Na začátek vzoru umístěte příznak, abyste změnili způsob shody celého vzoru.
| Flag | Effect |
|---|---|
(?i) |
Porovnávání nerozlišující malá a velká písmena. |
(?s) |
Dotall mode.
. odpovídá ukončovacím čarům. |
(?m) |
Víceřádkový režim.
^ a $ shodovat se při konců řádků. |
(?x) |
Režim komentářů Přeskočí prázdné znaky v modelu. |
Například (?i)ste(v\|ph)en odpovídá Steven, stevena STEPHEN to bez ohledu na případ.
Escaping and string literals
Chcete-li spárovat znak, který je také metacharakter regulárního výrazu (například ., *, (, [nebo \), předchází zpětné lomítko.
Například \. odpovídá literálové tečkě a \\ odpovídá zpětnému lomítku literálu.
Vzhledem k tomu, že zpětné lomítko je také řídicí znak v běžných řetězcových literálech SQL, musíte každé zpětné lomítko, které chcete předat modulu regulárních výrazů.
Pokud chcete například předat vzor \d+ funkci, napište ho jako '\\d+' v běžném řetězcovém literálu.
Chcete-li předejít tomuto dvojitému úniku, použijte raw-literal předzpracovánír (předpona), která zakáže předběžné zpracování řídicího znaku.
V nezpracovaných literálech napište vzor přesně tak, jak ho očekává modul regulárních výrazů:
-- 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
Obvyklé scénáře
Následující vzory se týkají častých úloh. Zapisují se jako nezpracované literály , aby zpětná lomítka prošla do modulu regulárních výrazů beze změny. Vzory e-mailů, adres URL a IP adres jsou záměrně jednoduché ilustrace, nikoli striktní validátory.
| Goal | Pattern |
|---|---|
| Celé číslo, volitelně podepsané | r'-?\d+' |
| Desetinné číslo | r'-?\d+(\.\d+)?' |
| Slovo | r'\w+' |
Jenom celé slovo cat |
r'\bcat\b' |
| E-mailová adresa (jednoduchá) | r'[\w.%+-]+@[\w.-]+\.\w{2,}' |
| Hostování v adrese URL | r'https?://([^/]+)' |
| Adresa IPv4 (nekontroluje 0–255) | r'\d{1,3}(\.\d{1,3}){3}' |
Datum ISO (YYYY-MM-DD) |
r'\d{4}-\d{2}-\d{2}' |
| Mezery na začátku nebo na konci | r'^\s+\|\s+$' |
| Telefonní číslo v USA (jednoduché) | r'\d{3}-\d{3}-\d{4}' |
Word hranice (\b) odpovídají celému word místo podřetězce:
-- '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
Zkombinujte předponu literálu s kvantifikátorem a extrahujte strukturovaný token, například ID objednávky:
> SELECT regexp_substr('Ref: ORD-12345 shipped on 2024-03-15', r'ORD-\d+');
ORD-12345
Volba správné funkce
Pomocí této tabulky vyberte funkci, která odpovídá vašemu cíli.
| Chceš... | Používání |
|---|---|
| Otestujte, jestli se řetězec shoduje. | rlike / Regexp / regexp_like |
| Vrátí první odpovídající podřetětěr. | regexp_substr |
| Vrátí skupinu zachycení. | regexp_extract |
| Vrátí všechny shody. | regexp_extract_all |
| Vrátí pozici shody. | regexp_instr |
| Spočítejte počet shod. | regexp_count |
| Nahraďte shody jiným textem. | regexp_replace |
| Rozdělte řetězec kolem shod. | split |
Porovná jednoduchý _ / % vzor. |
Jako / Ilike |