Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
POSIXoperator
Ekspresi POSIX reguler adalah urutan karakter yang menentukan pola kecocokan. String cocok dengan ekspresi reguler jika itu adalah anggota dari set reguler yang dijelaskan oleh ekspresi reguler.
POSIXekspresi reguler memberikan sarana yang lebih kuat untuk pencocokan pola daripada SIMILARUNTUK operator LIKE dan. POSIXpola ekspresi reguler dapat mencocokkan setiap bagian dari string, tidak seperti operator SIMILAR TO, yang mengembalikan true hanya jika polanya cocok dengan seluruh string.
catatan
Pencocokan ekspresi reguler menggunakan POSIX operator mahal secara komputasi. Kami merekomendasikan penggunaan LIKE bila memungkinkan, terutama saat memproses sejumlah besar baris. Misalnya, kueri berikut identik secara fungsional, 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%';
Sintaks
expression [ ! ] ~ pattern
Argumen
- ekspresi
-
Ekspresi karakter UTF -8 yang valid, seperti nama kolom.
- !
-
Operator negasi. Tidak cocok dengan ekspresi reguler.
- ~
-
Lakukan kecocokan peka huruf besar/kecil untuk setiap substring ekspresi.
catatan
A
~~
adalah sinonim untuk. LIKE - 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
danLIKE
, sintaks ekspresi POSIX reguler tidak mendukung karakter escape yang ditentukan pengguna.
Salah satu ekspresi karakter bisa CHAR atau tipe VARCHAR data. Jika berbeda, Amazon Redshift mengonversi pola ke tipe data ekspresi.
Semua ekspresi karakter dapat berupa CHAR atau tipe VARCHAR data. Jika ekspresi berbeda dalam tipe data, Amazon Redshift mengonversinya menjadi tipe data ekspresi.
POSIXpencocokan pola mendukung metakarakter berikut:
POSIX | Deskripsi |
---|---|
. | Cocokkan karakter tunggal apa pun. |
* |
Cocokkan nol atau lebih kejadian. |
+ |
Cocokkan satu atau lebih kejadian. |
? |
Cocokkan nol atau satu kejadian. |
| |
Menentukan kecocokan alternatif; misalnya, berarti E atauH . |
^ |
Cocokkan dengan beginning-of-line karakter. |
$ |
Cocokkan dengan end-of-line karakter. |
$ |
Cocokkan ujung string. |
[ ] | Tanda kurung menentukan daftar yang cocok, yang harus cocok dengan satu ekspresi dalam daftar. Tanda sisipan (^ ) mendahului daftar yang tidak cocok, yang cocok dengan karakter apa pun kecuali ekspresi yang diwakili dalam daftar. |
( ) |
Tanda kurung mengelompokkan item menjadi satu item logis. |
{m} |
Ulangi item sebelumnya tepat 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 POSIX karakter. Di kelas karakter berikut, Amazon Redshift hanya mendukung ASCII karakter:[:alnum:] ,,, [:alpha:] [:lower:] [:upper:] |
Amazon Redshift mendukung kelas POSIX karakter berikut.
Kelas Karakter | Deskripsi |
---|---|
[[:alnum:]] |
Semua karakter ASCII alfanumerik |
[[:alpha:]] |
Semua karakter ASCII alfabet |
[[:blank:]] |
Semua karakter ruang kosong |
[[:cntrl:]] |
Semua karakter kontrol (nonprinting) |
[[:digit:]] |
Semua digit numerik |
[[:lower:]] |
Semua karakter alfabet huruf kecil ASCII |
[[:punct:]] |
Semua karakter tanda baca |
[[:space:]] |
Semua karakter spasi (nonprinting) |
[[:upper:]] |
Semua karakter alfabet huruf besar ASCII |
[[:xdigit:]] |
Semua karakter heksadesimal yang valid |
Amazon Redshift mendukung operator yang dipengaruhi Perl berikut dalam ekspresi reguler. Melarikan diri dari operator menggunakan dua garis miring terbalik ('\\
').
Operator | Deskripsi | Ekspresi kelas karakter yang setara |
---|---|---|
\\d |
Karakter digit | [[:digit:]] |
\\D |
Karakter nondigit | [^[:digit:]] |
\\w |
Karakter kata | [[:word:]] |
\\W |
Karakter non-kata | [^[:word:]] |
\\s |
Karakter spasi putih | [[:space:]] |
\\S |
Karakter ruang non-putih | [^[:space:]] |
\\b |
Sebuah kata batas |
Contoh
Tabel berikut menunjukkan contoh pencocokan pola menggunakan POSIX operator:
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
atauH
:
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
atauH
:
SELECT DISTINCT city FROM users WHERE city !~ '.*E.*|.*H.*' ORDER BY city LIMIT 5;
city ----------------- Aberdeen Abilene Ada Agat Agawam
Contoh berikut menggunakan escape string ('\\
') 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