

 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 ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/) 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.

# Operator POSIX
<a name="pattern-matching-conditions-posix"></a>

Ekspresi reguler POSIX adalah urutan karakter yang menentukan pola kecocokan. Sebuah string cocok dengan ekspresi reguler jika itu adalah anggota dari set reguler yang dijelaskan oleh ekspresi reguler.

Ekspresi reguler POSIX menyediakan sarana yang lebih kuat untuk pencocokan pola daripada [SIMILAR TO](pattern-matching-conditions-similar-to.md) operator [SUKA](r_patternmatching_condition_like.md) and. Pola ekspresi reguler POSIX dapat mencocokkan bagian mana pun dari string, tidak seperti operator SIMILAR TO, yang mengembalikan true hanya jika polanya cocok dengan seluruh string.

**catatan**  
Pencocokan ekspresi reguler menggunakan operator POSIX mahal secara komputasi. Sebaiknya gunakan LIKE bila memungkinkan, terutama saat memproses sejumlah besar baris. Misalnya, kueri berikut secara fungsional identik, tetapi kueri yang menggunakan LIKE berjalan beberapa kali lebih cepat daripada kueri yang menggunakan ekspresi reguler:  

```
select count(*) from event where eventname ~ '.*(Ring|Die).*'; 
select count(*) from event where eventname LIKE '%Ring%' OR eventname LIKE '%Die%';
```

## Sintaksis
<a name="pattern-matching-conditions-posix-synopsis"></a>

```
expression [ ! ] ~ pattern
```

## Argumen
<a name="pattern-matching-conditions-posix-arguments"></a>

 *ekspresi*   
Eksp UTF-8 resi karakter yang valid, seperti nama kolom. 

\!  
Operator negasi. Tidak cocok dengan ekspresi reguler.

\~  
Lakukan kecocokan peka huruf besar/kecil untuk setiap substring ekspresi*. *   
A `~~` adalah sinonim untuk[SUKA](r_patternmatching_condition_like.md).

 *pola *   
Sebuah string literal yang mewakili pola ekspresi reguler. 

Jika * pola * tidak mengandung karakter wildcard, maka pola hanya mewakili string itu sendiri.

Untuk mencari string yang menyertakan metakarakter, seperti '`. * | ? `', dan seterusnya, hindari karakter menggunakan dua garis miring terbalik (''). ` \\` Tidak seperti `SIMILAR TO` dan`LIKE`, sintaks ekspresi reguler POSIX tidak mendukung karakter escape yang ditentukan pengguna. 

Salah satu ekspresi karakter dapat berupa tipe data CHAR atau VARCHAR. Jika berbeda, Amazon Redshift mengon * versi pola * ke tipe data * ekspresi*. 

Semua ekspresi karakter dapat berupa tipe data CHAR atau VARCHAR. Jika ekspresi berbeda dalam tipe data, Amazon Redshift mengubahnya menjadi tipe data * ekspresi*. 

Pencocokan pola POSIX mendukung metakarakter berikut: 


| POSIX  | Deskripsi  | 
| --- | --- | 
| .  | Cocokkan dengan karakter tunggal apa pun. | 
| \* | Cocokkan nol atau lebih kejadian. | 
| \+ | Cocokkan satu atau lebih kejadian. | 
| ? | Cocokkan nol atau satu kejadian. | 
| \| | Menentukan kecocokan alternatif; misalnya, E \| H  berarti E atauH. | 
| ^ | Cocokkan dengan karakter awal baris. | 
| $  | Cocokkan dengan karakter akhir baris. | 
| $  | Cocokkan dengan ujung string.  | 
| [ ] | Kurung menentukan daftar yang cocok, yang harus cocok dengan satu ekspresi dalam daftar. Sebuah caret (^) mendahului daftar yang tidak cocok, yang cocok dengan karakter apa pun kecuali untuk ekspresi yang diwakili dalam daftar. | 
| ( ) | Tanda kurung mengelompokkan item menjadi satu item logis. | 
| {m} | Ulangi item sebelumnya persis  m  kali. | 
| {m,} | Ulangi item sebelumnya  m  atau lebih kali. | 
| {m,n} | Ulangi item sebelumnya setidaknya  m  dan tidak lebih dari  n  kali. | 
| [: :] | Cocokkan karakter apa pun dalam kelas karakter POSIX. Di kelas karakter berikut, Amazon Redshift hanya mendukung karakter ASCII:[:alnum:],,, [:alpha:] [:lower:] [:upper:] | 

Amazon Redshift mendukung kelas karakter POSIX berikut. 


| Kelas Karakter  | Deskripsi  | 
| --- | --- | 
| [[:alnum:]] | Semua karakter alfanumerik ASCII | 
| [[:alpha:]] | Semua karakter alfabet ASCII | 
| [[:blank:]] | Semua karakter spasi kosong | 
| [[:cntrl:]] | Semua karakter kontrol (nonprinting) | 
| [[:digit:]] | Semua digit numerik | 
| [[:lower:]] | Semua karakter alfabet ASCII huruf kecil | 
| [[:punct:]] | Semua karakter tanda baca | 
| [[:space:]] | Semua karakter spasi (nonprinting) | 
| [[:upper:]] | Semua karakter alfabet ASCII huruf besar | 
| [[:xdigit:]] | Semua karakter heksadesimal yang valid | 

 Amazon Redshift mendukung Perl-influenced operator berikut dalam ekspresi reguler. Keluar dari operator menggunakan dua garis miring terbalik ('`\\`').   


| Operator | Deskripsi  | Ekspresi kelas karakter setara | 
| --- | --- | --- | 
| \\\\d | Karakter digit | [[:digit:]] | 
| \\\\D | Karakter nondigit | [^[:digit:]] | 
| \\\\w | Karakter kata | [[:word:]] | 
| \\\\W | Karakter bukan kata | [^[:word:]] | 
| \\\\s | Karakter spasi putih | [[:space:]] | 
| \\\\S | Karakter bukan spasi putih | [^[:space:]] | 
| \\\\b | Sebuah kata batas |   | 

## Contoh
<a name="pattern-matching-conditions-posix-synopsis-examples"></a>

Tabel berikut menunjukkan contoh pencocokan pola menggunakan operator POSIX:


| Ekspresi  | Pengembalian  | 
| --- | --- | 
| 'abc' \~ 'abc' | True | 
| 'abc' \~ 'a' | Benar | 
| 'abc' \~ 'A' | Salah | 
| 'abc' \~ '.\*(b\|d).\*' | Benar | 
| 'abc' \~ '(b\|c).\*' | Benar | 
| 'AbcAbcdefgefg12efgefg12' \~ '((Ab)?c)\+d((efg)\+(12))\+'   | Benar | 
| 'aaaaaab11111xy' \~ 'a{6}.[1]{5}(x\|y){2}'  | Benar | 
| '$0.87' \~ '\\\\$[0-9]\+(\\\\.[0-9][0-9])?'  | Benar | 
| 'ab c' \~ '[[:space:]]'  | Benar | 
| 'ab c' \~ '\\\\s'  | Benar | 
| ' ' \~ '\\\\S'  | False | 

Contoh berikut menemukan kota yang namanya mengandung `E` atau`H`: 

```
SELECT DISTINCT city FROM users
WHERE city ~ '.*E.*|.*H.*' ORDER BY city LIMIT 5;

      city
-----------------
 Agoura Hills
 Auburn Hills
 Benton Harbor
 Beverly Hills
 Chicago Heights
```

Contoh berikut menemukan kota yang namanya tidak mengandung `E` atau`H`: 

```
SELECT DISTINCT city FROM users WHERE city !~ '.*E.*|.*H.*' ORDER BY city LIMIT 5;

      city
-----------------
 Aberdeen	
 Abilene	
 Ada	
 Agat	
 Agawam
```

Contoh berikut menggunakan string escape ('`\\`') untuk mencari string yang menyertakan titik. 

```
SELECT venuename FROM venue
WHERE venuename ~ '.*\\..*'
ORDER BY venueid;

          venuename
------------------------------
 St. Pete Times Forum
 Jobing.com Arena
 Hubert H. Humphrey Metrodome
 U.S. Cellular Field
 Superpages.com Center
 E.J. Nutter Center
 Bernard B. Jacobs Theatre
 St. James Theatre
```