View a markdown version of this page

Fungsi REGEXP_SUBSTR - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.

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

Fungsi REGEXP_SUBSTR

Mengembalikan karakter dari string dengan mencarinya untuk pola ekspresi reguler. REGEXP_SUBSTR mirip dengan fung Fungsi SUBSTRING sinya, tetapi dengan REGEXP_SUBSTR, Anda dapat mencari string untuk pola ekspresi reguler. Jika fungsi tidak dapat mencocokkan ekspresi reguler dengan karakter apa pun dalam string, ia mengembalikan string kosong. Untuk informasi selengkapnya tentang ekspresi reguler, lihat Operator POSIX dan Ek spresi regul er di Wikipedia.

Sintaksis

REGEXP_SUBSTR( source_string, pattern [, position [, occurrence [, parameters ] ] ] )

Argumen

sumber_string

Ekspresi string yang akan dicari.

pola

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

posisi

Bilangan bulat positif yang menunjukkan posisi dalam source_string untuk mulai mencari. Posisi didasarkan pada jumlah karakter, bukan byte, sehingga karakter multi-byte dihitung sebagai karakter tunggal. Default-nya adalah 1. Jika posisi kurang dari 1, pencarian dimulai pada karakter pertama source _string. Jika posisi lebih besar dari jumlah karakter dalam source_string, hasilnya adalah string kosong (“”).

kejadian

Bilangan bulat positif yang menunjukkan kemunculan pola mana yang akan digunakan. REGEXP_SUBSTR melewatkan kejadian pertama -1 kecocokan. Default-nya adalah 1. Jika kejadian kurang dari 1 atau lebih besar dari jumlah karakter dalam source_string, pencarian diabaikan dan hasilnya kosong.

parameter

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

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

  • i — Lakukan pencocokan yang tidak peka huruf besar/kecil.

  • e — Ekstrak substring menggunakan subexpression.

    Jika pola menyer takan subexpression, REGEXP_SUBSTR mencocokkan substring menggunakan subexpression pertama dalam pola. Subexpression adalah ekspresi dalam pola yang dikurung dengan tanda kurung. Misalnya, untuk pola 'This is a (\\w+)' cocok ekspresi pertama dengan string 'This is a ' diikuti oleh kata. Alih-alih mengembalikan pola, REGEXP_SUBSTR dengan e parameter hanya mengembalikan string di dalam subexpression.

    REGEXP_SUBSTR hanya mempertimbangkan subexpression pertama; subexpresi tambahan diabaikan. Jika pola tidak memiliki subexpression, REGEXP_SUBSTR mengabaikan parameter 'e'.

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

Jenis pengembalian

VARCHAR

Contoh

Contoh berikut mengembalikan bagian alamat email antara karakter @ dan ekstensi domain. usersData yang ditanyakan berasal dari data sampel Amazon Redshift. Untuk informasi selengkapnya, lihat Database sampel.

SELECT email, regexp_substr(email,'@[^.]*') FROM users ORDER BY userid LIMIT 4; email | regexp_substr -----------------------------------------------+-------------------------- Suspendisse.tristique@nonnisiAenean.edu | @nonnisiAenean amet.faucibus.ut@condimentumegetvolutpat.ca | @condimentumegetvolutpat sed@lacusUtnec.ca | @lacusUtnec Cum@accumsan.com | @accumsan

Contoh berikut mengembalikan bagian input yang sesuai dengan kejadian pertama string FOX menggunakan pencocokan case-insensitive.

SELECT regexp_substr('the fox', 'FOX', 1, 1, 'i'); regexp_substr --------------- fox

Contoh berikut mengembalikan bagian input yang sesuai dengan kejadian kedua string FOX menggunakan pencocokan case-insensitive. Hasilnya kosong (non-null, panjang 0) karena tidak ada kejadian kedua.

SELECT regexp_substr('the fox', 'FOX', 1, 2, 'i'); regexp_substr ---------------

Contoh berikut mengembalikan bagian pertama dari input yang dimulai dengan huruf kecil. Ini secara fungsional identik dengan pernyataan SELECT yang sama tanpa c parameter.

SELECT regexp_substr('THE SECRET CODE IS THE LOWERCASE PART OF 1931abc0EZ.', '[a-z]+', 1, 1, 'c'); regexp_substr --------------- abc

Contoh berikut menggunakan pola yang ditulis dalam dialek PCRE untuk menemukan kata-kata yang berisi setidaknya satu angka dan satu huruf kecil. Ini menggunakan ?= operator, yang memiliki konotasi tampilan ke depan tertentu di PCRE. Contoh ini mengembalikan bagian input yang sesuai dengan kata kedua tersebut.

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

Contoh berikut menggunakan pola yang ditulis dalam dialek PCRE untuk menemukan kata-kata yang berisi setidaknya satu angka dan satu huruf kecil. Ini menggunakan ?= operator, yang memiliki konotasi tampilan ke depan tertentu di PCRE. Contoh ini mengembalikan bagian input yang sesuai dengan kata kedua tersebut, tetapi berbeda dari contoh sebelumnya karena menggunakan pencocokan case-insensitive.

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

Contoh berikut menggunakan subexpression untuk menemukan string kedua yang cocok dengan pola 'this is a (\\w+)' menggunakan pencocokan case-insensitive. Ini mengembalikan subexpression di dalam tanda kurung.

SELECT regexp_substr( 'This is a cat, this is a dog. This is a mouse.', 'this is a (\\w+)', 1, 2, 'ie'); regexp_substr --------------- dog