

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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

# Fungsi REGEXP\$1INSTR
<a name="REGEXP_INSTR"></a>

Mencari string untuk pola ekspresi reguler dan mengembalikan integer yang menunjukkan posisi awal atau posisi akhir dari substring yang cocok. Jika tidak ada kecocokan yang ditemukan, maka fungsi kembali`0`. REGEXP\$1INSTR mirip dengan fungsi [POSITION](r_POSITION.md), tetapi memungkinkan Anda mencari string untuk pola ekspresi reguler. Untuk informasi selengkapnya tentang ekspresi reguler, lihat [Operator POSIX](pattern-matching-conditions-posix.md) dan [Ekspresi reguler](https://en.wikipedia.org/wiki/Regular_expression) di Wikipedia.

## Sintaksis
<a name="REGEXP_INSTR-synopsis"></a>

```
REGEXP_INSTR( source_string, pattern [, position [, occurrence] [, option [, parameters ] ] ] ] )
```

## Argumen
<a name="REGEXP_INSTR-arguments"></a>

 *source\$1string*   
Ekspresi string, seperti nama kolom, yang akan dicari. 

 *pola*   
Sebuah string UTF-8 literal yang mewakili pola ekspresi reguler. Untuk informasi selengkapnya, lihat [Operator POSIX](pattern-matching-conditions-posix.md).

 *posisi*   
(Opsional) Positif `INTEGER` yang menunjukkan posisi dalam *source\$1string* untuk mulai mencari. Posisi didasarkan pada jumlah karakter, bukan byte, sehingga karakter multibyte dihitung sebagai karakter tunggal. Nilai default-nya `1`. Jika *posisi* kurang dari`1`, pencarian dimulai pada karakter pertama *source\$1string*. Jika *posisi* lebih besar dari jumlah karakter di *source\$1string, hasilnya* adalah. `0`

 *kejadian*   
(Opsional) Positif `INTEGER` yang menunjukkan kemunculan pola mana yang akan digunakan. REGEXP\$1INSTR melewatkan pertandingan pertama. `occurrence-1` Nilai default-nya `1`. Jika *kejadian* kurang dari `1` atau lebih besar dari jumlah karakter di *source\$1string*, pencarian diabaikan dan hasilnya adalah. `0`

 *pilihan*   
(Opsional) Nilai yang menunjukkan apakah akan mengembalikan posisi karakter pertama pertandingan (`0`) atau posisi karakter pertama setelah akhir pertandingan (`1`). Nilai bukan nol sama `1` dengan. Nilai default-nya adalah `0`. 

 *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. 
+ e — Ekstrak substring menggunakan subexpression. 

  *Jika *pola* menyertakan subexpression, REGEXP\$1INSTR cocok dengan substring menggunakan subexpression pertama dalam pola.* REGEXP\$1INSTR hanya mempertimbangkan subexpression pertama; subexpressions tambahan diabaikan. Jika pola tidak memiliki subexpression, REGEXP\$1INSTR mengabaikan parameter 'e'. 
+ p — Menafsirkan pola dengan dialek Perl Compatible Regular Expression (PCRE). Untuk informasi selengkapnya tentang PCRE, lihat [Ekspresi Reguler Kompatibel Perl](https://en.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions) di Wikipedia.

## Jenis pengembalian
<a name="REGEXP_INSTR-return-type"></a>

Bilangan Bulat

## Contoh
<a name="REGEXP_INSTR-examples"></a>

Contoh berikut menggunakan data dari tabel USERS dalam database sampel TICKIT. Untuk informasi selengkapnya, lihat [Database sampel](c_sampledb.md). 

Untuk mencari `@` karakter yang memulai nama domain dan mengembalikan posisi awal kecocokan pertama, gunakan contoh berikut.

```
SELECT email, REGEXP_INSTR(email, '@[^.]*')
FROM users
ORDER BY userid LIMIT 4;

+-----------------------------------------------+--------------+
|                     email                     | regexp_instr |
+-----------------------------------------------+--------------+
| Etiam.laoreet.libero@sodalesMaurisblandit.edu |           21 |
| Suspendisse.tristique@nonnisiAenean.edu       |           22 |
| amet.faucibus.ut@condimentumegetvolutpat.ca   |           17 |
| sed@lacusUtnec.ca                             |            4 |
+-----------------------------------------------+--------------+
```

Untuk mencari varian kata `Center` dan mengembalikan posisi awal kecocokan pertama, gunakan contoh berikut.

```
SELECT venuename, REGEXP_INSTR(venuename,'[cC]ent(er|re)$')
FROM venue
WHERE REGEXP_INSTR(venuename,'[cC]ent(er|re)$') > 0
ORDER BY venueid LIMIT 4;

+-----------------------+--------------+
|       venuename       | regexp_instr |
+-----------------------+--------------+
| The Home Depot Center |           16 |
| Izod Center           |            6 |
| Wachovia Center       |           10 |
| Air Canada Centre     |           12 |
+-----------------------+--------------+
```

Untuk menemukan posisi awal dari kemunculan pertama string`FOX`, menggunakan logika pencocokan case-insensitive, gunakan contoh berikut. 

```
SELECT REGEXP_INSTR('the fox', 'FOX', 1, 1, 0, 'i');

+--------------+
| regexp_instr |
+--------------+
|            5 |
+--------------+
```

Untuk menggunakan pola yang ditulis dalam dialek PCRE untuk menemukan kata-kata yang mengandung setidaknya satu angka dan satu huruf kecil, gunakan contoh berikut. Ini menggunakan `?=` operator, yang memiliki konotasi pandangan ke depan tertentu di PCRE. Contoh ini menemukan posisi awal dari kata kedua tersebut.

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

+--------------+
| regexp_instr |
+--------------+
|           21 |
+--------------+
```

Untuk menggunakan pola yang ditulis dalam dialek PCRE untuk menemukan kata-kata yang mengandung setidaknya satu angka dan satu huruf kecil, gunakan contoh berikut. Ini menggunakan `?=` operator, yang memiliki konotasi pandangan ke depan tertentu di PCRE. Contoh ini menemukan posisi awal dari kata kedua tersebut, tetapi berbeda dari contoh sebelumnya karena menggunakan pencocokan case-insensitive.

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

+--------------+
| regexp_instr |
+--------------+
|           15 |
+--------------+
```