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
Mengekstrak string pertama dalam str yang cocok dengan ekspresi regexp dan sesuai dengan indeks grup regex.
Sintaks
regexp_extract(str, regexp [, idx] )
Argumen
-
str: EkspresiSTRINGyang akan dicocokkan. -
regexp: EkspresiSTRINGdengan pola yang cocok. -
idx: Ekspresi bilangan integral opsional lebih besar atau sama dengan 0 dengan default 1.
Mengembalikan
STRING.
Jika str, , regexpatau idx adalah NULL, hasilnya adalah NULL.
Jika regexp tidak cocok dengan bagian mana pun dari str, hasilnya adalah string kosong.
Jika pola keseluruhan cocok tetapi grup yang ditentukan oleh idx tidak berpartisipasi dalam kecocokan, hasilnya adalah string kosong.
String regexp harus berupa ekspresi reguler Java. Lihat pola regex Java untuk sintaks yang didukung.
Saat menggunakan literal, gunakan raw-literal (r awalan) untuk menghindari pra-pemrosesan karakter escape.
regexp mungkin berisi beberapa grup. Grup pengambilan didefinisikan dengan mengapit bagian dari pola dalam tanda kurung (...).
idx menunjukkan grup regex mana yang akan diekstrak.
idx dari 0 berarti mencocokkan seluruh ekspresi reguler.
Nilai idx default adalah 1, yang berarti grup pengambilan pertama dikembalikan saat idx dihilangkan.
Jika idx lebih besar dari jumlah grup pengambilan yang ditentukan dalam regexp, Databricks menimbulkan kesalahan.
Hanya pertandingan regexp pertama dalam yang dipertimbangkan str . Untuk mengekstrak semua kecocokan, gunakan regexp_extract_all.
Kondisi kesalahan umum
Contoh
Mengekstrak grup pengambilan tertentu
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 1);
100
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 2);
200
Gunakan idx 0 untuk mengembalikan seluruh kecocokan
> SELECT regexp_extract('Order: 100-200', '(\\d+)-(\\d+)', 0);
100-200
Idx default adalah 1
Ketika idx dihilangkan, grup pengambilan pertama dikembalikan.
> SELECT regexp_extract('abc123def', '([a-z]+)(\\d+)');
abc
Tidak ada kecocokan yang mengembalikan string kosong
> SELECT regexp_extract('hello world', '(\\d+)', 1);
Input NULL mengembalikan NULL
> SELECT regexp_extract(NULL, '(\\d+)', 1);
NULL
Gunakan literal string mentah untuk menghindari pelepasan ganda
Dalam string SQL biasa, garis miring terbalik harus digandakan (\\d rata-rata \d). Gunakan awalan r untuk literal string mentah untuk menulis pola secara lebih alami.
> SELECT regexp_extract('abc123', r'(\d+)', 1);
123
Mengekstrak domain dari URL
> SELECT regexp_extract('https://www.databricks.com/product', r'https?://([^/]+)', 1);
www.databricks.com
Mengekstrak komponen dari string tanggal
> SELECT regexp_extract('Event on 2024-03-15', r'(\d{4})-(\d{2})-(\d{2})', 0);
2024-03-15
> SELECT regexp_extract('Event on 2024-03-15', r'(\d{4})-(\d{2})-(\d{2})', 2);
03
Grup pengambilan opsional yang tidak berpartisipasi dalam kecocokan
Saat grup bersifat opsional dan tidak cocok, string kosong dikembalikan untuk grup tersebut.
> SELECT regexp_extract('ac', r'(a)(b)?(c)', 2);
Pola regex tidak valid
> SELECT regexp_extract('abc', '[invalid', 0);
Error: INVALID_PARAMETER_VALUE.PATTERN