Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime
Ekspresi reguler (regex) adalah pola yang menjelaskan sekumpulan string. Beberapa Azure Databricks fungsi dan operator SQL mengambil ekspresi reguler untuk mencocokkan, menemukan, menghitung, mengekstrak, mengganti, atau memisahkan teks:
- operator rlike dan operator regexp: uji apakah string cocok dengan pola.
- regexp_like fungsi: uji apakah string cocok dengan pola.
- regexp_count fungsi: hitung berapa kali pola cocok.
- regexp_instr fungsi: mengembalikan posisi kecocokan pertama.
- regexp_substr fungsi: mengembalikan substring pencocokan pertama.
- regexp_extract dan fungsi regexp_extract_all : mengembalikan grup pengambilan dari kecocokan pertama atau dari semua kecocokan.
- regexp_replace fungsi: ganti kecocokan dengan string pengganti.
- fungsi split : membagi string di sekitar kecocokan pola.
Operator suka dan iliketidak menggunakan ekspresi reguler. Mereka menggunakan bahasa pola yang lebih sederhana berdasarkan _ dan %.
Mesin regex
Azure Databricks mengevaluasi ekspresi reguler menggunakan mesin Javajava.util.regex.
Pola harus mengikuti sintaks ekspresi reguler Java, yang secara luas kompatibel dengan ekspresi reguler gaya Perl tetapi berbeda dalam beberapa detail.
Untuk referensi lengkap dan otoritatif, lihat dokumentasi kelas JavaPattern.
Bagian berikut menjelaskan konstruksi yang paling umum digunakan.
Kelas karakter
| Membangun | Pencocokan |
|---|---|
. |
Setiap karakter tunggal kecuali terminator baris (kecuali s bendera diatur). |
[abc] |
Salah satu karakter yang tercantum: a, , batau c. |
[^abc] |
Setiap karakter tunggal yang tidaka, b, atau c. |
[a-z] |
Setiap karakter dalam rentang a melalui z. |
\d, \D |
Digit ([0-9]); \D cocok dengan non-digit apa pun. |
\w, \W |
Karakter kata ([a-zA-Z_0-9]); \W cocok dengan karakter non-kata apa pun. |
\s, \S |
Karakter spasi putih; \S cocok dengan karakter non-spasi kosong. |
Jangkar dan batasan
| Membangun | Pencocokan |
|---|---|
^ |
Awal input (atau baris dengan m bendera). |
$ |
Akhir input (atau baris dengan m bendera). |
\b, \B |
Batas kata; \B cocok dengan batas non-kata. |
Pembilang
Kuantifier menentukan berapa kali elemen sebelumnya harus cocok.
Secara default, kuantifier serakah dan cocok sebanyak mungkin. Tambahkan ? untuk membuat kuantifier enggan (cocokkan sesedikit mungkin), misalnya .*?.
| Membangun | Cocok dengan elemen sebelumnya... |
|---|---|
* |
Nol kali atau lebih. |
+ |
Satu atau beberapa kali. |
? |
Nol atau satu kali. |
{n} |
Tepat n waktu. |
{n,} |
Setidaknya berkali-kali n . |
{n,m} |
Antara n dan m waktu. |
Grup dan pergantian
| Membangun | Description |
|---|---|
(...) |
Grup penangkap. Gunakan indeks grup dengan regexp_extract. |
(?:...) |
Grup yang tidak menangkap. Grup tanpa menangkap kecocokan. |
a\|b |
Pergantian. Cocok baik a atau b. |
Bendera sebaris
Tempatkan bendera di awal pola untuk mengubah bagaimana seluruh pola dicocokkan.
| Flag | Efek |
|---|---|
(?i) |
Pencocokan yang Tidak Peka Huruf Besar/Kecil. |
(?s) |
Mode dotall.
. cocok dengan terminator garis. |
(?m) |
Mode Baris Ganda.
^ dan $ cocokkan pada jeda baris. |
(?x) |
Mode komentar. Mengabaikan spasi kosong yang tidak dilewati dalam pola. |
Misalnya, (?i)ste(v\|ph)en cocok Stevendengan , steven, dan STEPHEN terlepas dari kasusnya.
Pelepasan dan string literal
Untuk mencocokkan karakter yang juga merupakan metacharacter regex (seperti ., , *, ([, atau \), mendahuluinya dengan garis miring terbalik.
Misalnya, \. cocok dengan periode harfiah, dan \\ cocok dengan garis miring terbelakang harfiah.
Karena garis miring terbelakang juga merupakan karakter escape dalam literal string SQL biasa, Anda harus menggandakan setiap garis miring terbelakang yang ingin Anda teruskan ke mesin regex.
Misalnya, untuk meneruskan pola \d+ ke fungsi, tulis seperti '\\d+' dalam literal string reguler.
Untuk menghindari pelepasan ganda ini, gunakan raw-literal (r awalan), yang menonaktifkan praproses karakter escape.
Dalam literal mentah, tulis pola persis seperti yang diharapkan mesin regex:
-- 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
Pola umum
Pola berikut mencakup tugas yang sering. Mereka ditulis sebagai literal mentah sehingga garis miring terbalik melewati ke mesin regex tidak berubah. Pola email, URL, dan IP sengaja merupakan ilustrasi sederhana, bukan validator yang ketat.
| Maksud | Pattern |
|---|---|
| Bilangan bulat, ditandatangani secara opsional | r'-?\d+' |
| Bilangan desimal | r'-?\d+(\.\d+)?' |
| Sebuah kata | r'\w+' |
Seluruh kata cat saja |
r'\bcat\b' |
| Alamat email (sederhana) | r'[\w.%+-]+@[\w.-]+\.\w{2,}' |
| Host dalam URL | r'https?://([^/]+)' |
| Alamat IPv4 (tidak memeriksa 0–255) | r'\d{1,3}(\.\d{1,3}){3}' |
Tanggal ISO (YYYY-MM-DD) |
r'\d{4}-\d{2}-\d{2}' |
| Spasi awal atau akhir | r'^\s+\|\s+$' |
| Nomor telepon AS (sederhana) | r'\d{3}-\d{3}-\d{4}' |
Word batas (\b) cocok dengan seluruh word daripada substring:
-- '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
Gabungkan awalan harfiah dengan kuantifier untuk mengekstrak token terstruktur, seperti ID pesanan:
> SELECT regexp_substr('Ref: ORD-12345 shipped on 2024-03-15', r'ORD-\d+');
ORD-12345
Pilih fungsi yang tepat
Gunakan tabel ini untuk memilih fungsi yang cocok dengan tujuan Anda.
| Anda ingin ... | Gunakan |
|---|---|
| Uji apakah string cocok. | rlike / regexp / regexp_like |
| Mengembalikan substring pencocokan pertama. | regexp_substr |
| Mengembalikan grup pengambilan. | regexp_extract |
| Mengembalikan semua kecocokan. | regexp_extract_all |
| Mengembalikan posisi kecocokan. | regexp_instr |
| Hitung jumlah kecocokan. | regexp_count |
| Ganti kecocokan dengan teks lain. | penggantian_regexp |
| Pisahkan string di sekitar kecocokan. | split |
Cocokkan pola sederhana _ / % . |
Seperti / Ilike |