Fungsi REGEXP_REPLACE - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai 1 November 2025. Jika Anda ingin menggunakan Python UDFs, buat UDFs sebelum tanggal tersebut. Python yang ada UDFs akan terus berfungsi seperti biasa. Untuk informasi lebih lanjut, lihat posting blog.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Fungsi REGEXP_REPLACE

Mencari string untuk pola ekspresi reguler dan menggantikan setiap kemunculan pola dengan string yang ditentukan. REGEXP_REPLACE mirip denganGANTI fungsi, tetapi memungkinkan Anda mencari string untuk pola ekspresi reguler. Untuk informasi selengkapnya tentang ekspresi reguler, lihat Operator POSIX dan Ekspresi reguler di Wikipedia.

REGEXP_REPLACE mirip dengan FUNGSI TRANSLATE danGANTI fungsi, kecuali bahwa TRANSLATE membuat beberapa substitusi karakter tunggal dan REPLACE menggantikan satu seluruh string dengan string lain, sementara REGEXP_REPLACE memungkinkan Anda mencari string untuk pola ekspresi reguler.

Sintaksis

REGEXP_REPLACE( source_string, pattern [, replace_string [ , position [, parameters ] ] ] )

Argumen

source_string

Ekspresi CHAR atau VARCHAR string, seperti nama kolom, yang akan dicari.

pola

Sebuah string UTF-8 literal yang mewakili pola ekspresi reguler. Untuk informasi selengkapnya, lihat Operator POSIX.

replace_string

(Opsional) Ekspresi A CHAR atau VARCHAR string, seperti nama kolom, yang akan menggantikan setiap kemunculan pola. Defaultnya adalah string kosong (“”).

posisi

(Opsional) Sebuah integer positif yang menunjukkan posisi dalam source_string untuk mulai mencari. Posisi didasarkan pada jumlah karakter, bukan byte, sehingga karakter multibyte dihitung sebagai karakter tunggal. Nilai default-nya 1. Jika posisi kurang dari1, pencarian dimulai pada karakter pertama source_string. Jika posisi lebih besar dari jumlah karakter di source_string, hasilnya adalah source_string.

parameter

(Opsional) Satu atau lebih string literal yang menunjukkan bagaimana fungsi cocok dengan pola. Nilai yang mungkin adalah sebagai berikut:

  • c - Lakukan pencocokan peka huruf besar/kecil. Standarnya adalah menggunakan pencocokan peka huruf besar/kecil.

  • i — Lakukan pencocokan case-insensitive.

  • p — Menafsirkan pola dengan dialek Perl Compatible Regular Expression (PCRE). Untuk informasi selengkapnya tentang PCRE, lihat Ekspresi Reguler Kompatibel Perl di Wikipedia.

Jenis pengembalian

VARCHAR

Jika salah satu pola atau replace_string adalahNULL, fungsi kembali. NULL

Contoh

Untuk mengganti semua kemunculan string FOX dalam nilai quick brown fox menggunakan pencocokan case-insensitive, gunakan contoh berikut.

SELECT REGEXP_REPLACE('the fox', 'FOX', 'quick brown fox', 1, 'i'); +---------------------+ | regexp_replace | +---------------------+ | the quick brown fox | +---------------------+

Contoh berikut menggunakan pola yang ditulis dalam dialek PCRE untuk menemukan kata-kata yang mengandung setidaknya satu angka dan satu huruf kecil. Ini menggunakan ?= operator, yang memiliki konotasi pandangan ke depan tertentu di PCRE. Untuk mengganti setiap kemunculan kata seperti itu dengan nilainya[hidden], gunakan contoh berikut.

SELECT REGEXP_REPLACE('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', '[hidden]', 1, 'p'); +-------------------------------+ | regexp_replace | +-------------------------------+ | [hidden] plain A1234 [hidden] | +-------------------------------+

Contoh berikut menggunakan pola yang ditulis dalam dialek PCRE untuk menemukan kata-kata yang mengandung setidaknya satu angka dan satu huruf kecil. Ini menggunakan ?= operator, yang memiliki konotasi pandangan ke depan tertentu di PCRE. Untuk mengganti setiap kemunculan kata seperti itu dengan nilai[hidden], tetapi berbeda dari contoh sebelumnya karena menggunakan pencocokan case-insensitive, gunakan contoh berikut.

SELECT REGEXP_REPLACE('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', '[hidden]', 1, 'ip'); +----------------------------------+ | regexp_replace | +----------------------------------+ | [hidden] plain [hidden] [hidden] | +----------------------------------+

Contoh berikut menggunakan data dari tabel USERS dalam database sampel TICKIT. Untuk informasi selengkapnya, lihat Database sampel.

Untuk menghapus @ dan nama domain dari alamat email, gunakan contoh berikut.

SELECT email, REGEXP_REPLACE(email, '@.*\\.(org|gov|com|edu|ca)$') FROM users ORDER BY userid LIMIT 4; +-----------------------------------------------+-----------------------+ | email | regexp_replace | +-----------------------------------------------+-----------------------+ | Etiam.laoreet.libero@sodalesMaurisblandit.edu | Etiam.laoreet.libero | | Suspendisse.tristique@nonnisiAenean.edu | Suspendisse.tristique | | amet.faucibus.ut@condimentumegetvolutpat.ca | amet.faucibus.ut | | sed@lacusUtnec.ca | sed | +-----------------------------------------------+-----------------------+

Untuk mengganti nama domain alamat email denganinternal.company.com, gunakan contoh berikut.

SELECT email, REGEXP_REPLACE(email, '@.*\\.[[:alpha:]]{2,3}','@internal.company.com') FROM users ORDER BY userid LIMIT 4; +-----------------------------------------------+--------------------------------------------+ | email | regexp_replace | +-----------------------------------------------+--------------------------------------------+ | Etiam.laoreet.libero@sodalesMaurisblandit.edu | Etiam.laoreet.libero@internal.company.com | | Suspendisse.tristique@nonnisiAenean.edu | Suspendisse.tristique@internal.company.com | | amet.faucibus.ut@condimentumegetvolutpat.ca | amet.faucibus.ut@internal.company.com | | sed@lacusUtnec.ca | sed@internal.company.com | +-----------------------------------------------+--------------------------------------------+