Ekspresi Reguler MYSQL (REGEXP) dengan Sintaks & Contoh

Apa itu ekspresi reguler?

Ekspresi Reguler membantu pencarian data yang cocok dengan kriteria yang kompleks. Kita telah membahas karakter pengganti dalam tutorial sebelumnya. Jika Anda pernah bekerja dengan karakter pengganti sebelumnya, Anda mungkin bertanya mengapa mempelajari ekspresi reguler jika Anda bisa mendapatkan hasil yang serupa menggunakan karakter pengganti. Karena, dibandingkan dengan karakter pengganti, ekspresi reguler memungkinkan kita untuk mencari data yang cocok dengan kriteria yang lebih kompleks.

Sintaks dasar

Sintaks dasar untuk ekspresi reguler adalah sebagai berikut

SELECT statements... WHERE fieldname REGEXP 'pattern';

DI SINI -

  • “Pernyataan PILIH…” adalah standar PILIH pernyataan
  • “Nama kolom DIMANA” adalah nama kolom tempat ekspresi reguler akan dijalankan.
  • “Pola REGEXP” REGEXP adalah operator ekspresi reguler dan 'pola' mewakili pola yang akan dicocokkan oleh REGEXP. RLIKE adalah sinonim untuk REGEXP dan mencapai hasil yang sama seperti REGEXP. Untuk menghindari kebingungan dengan operator LIKE, ini lebih baik menggunakan REGEXP sebagai gantinya.

Sekarang mari kita lihat contoh praktis-

SELECT * FROM `movies` WHERE `title` REGEXP 'code';

Kueri di atas mencari semua judul film yang memiliki kode kata di dalamnya. Tidak peduli apakah “kode” itu ada di awal, tengah, atau akhir judul. Sepanjang tercantum dalam judul maka akan dipertimbangkan.

Misalkan kita ingin mencari film yang dimulai dengan a, b, c atau d , diikuti oleh sejumlah karakter lainnya, bagaimana cara kita mencapainya. Kita dapat menggunakan ekspresi reguler bersama dengan metakarakter untuk mencapai hasil yang kita inginkan.

SELECT * FROM `movies` WHERE `title` REGEXP '^[abcd]';

Menjalankan skrip di atas dalam MySQL meja kerja terhadap myflixdb memberi kita hasil berikut.

movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6

Sekarang mari kita lihat ekspresi reguler kita yang bertanggung jawab atas hasil di atas.

'^[abcd]' tanda sisipan (^) berarti kecocokan pola harus diterapkan di awal dan charlist [abcd] berarti hanya judul film yang dimulai dengan a, b, c atau d yang dikembalikan dalam kumpulan hasil kami.

Mari kita modifikasi skrip di atas dan gunakan daftar karakter NOT dan lihat hasil apa yang akan kita dapatkan setelah menjalankan kueri kita.

SELECT * FROM `movies` WHERE `title` REGEXP '^[^abcd]';

Menjalankan skrip di atas dalam MySQL workbench terhadap myflixdb memberi kita hasil berikut.

movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
3 X-Men 2008
9 Honey mooners John Schultz 2005 8
16 67% Guilty 2012
17 The Great Dictator Chalie Chaplie 1920 7
18 sample movie Anonymous 8
19 movie 3 John Brown 1920 8

Sekarang mari kita lihat ekspresi reguler kita yang bertanggung jawab atas hasil di atas.

'^[^abcd]' tanda sisipan (^) berarti kecocokan pola harus diterapkan di awal dan charlist [^abcd] berarti judul film yang dimulai dengan salah satu karakter terlampir dikecualikan dari kumpulan hasil.

Metakarakter ekspresi reguler

Apa yang kita lihat pada contoh di atas adalah bentuk ekspresi reguler yang paling sederhana. Sekarang mari kita lihat kecocokan pola ekspresi reguler tingkat lanjut. Misalkan kita ingin mencari judul film yang diawali dengan pola “kode” hanya dengan menggunakan ekspresi reguler, bagaimana caranya? Jawabannya adalah metakarakter. Mereka memungkinkan kita menyempurnakan hasil pencarian pola menggunakan ekspresi reguler.

Arang Description Example
* tanda bintang (*) metakarakter digunakan untuk mencocokkan nol (0) atau lebih contoh string sebelumnya PILIH * DARI film DIMANA judul REGEXP 'da*'; akan memberikan semua film yang mengandung karakter “da”. Misalnya, Da Vinci Code, Gadis Kecil Ayah.
+ ditambah (+) metakarakter digunakan untuk mencocokkan satu atau lebih contoh string sebelumnya. PILIH * DARI `film` DI MANA `judul` REGEXP 'mon+'; akan memberikan semua film yang mengandung karakter “mon”. Misalnya, Angels and Demons.
? Pertanyaan(?) metakarakter digunakan untuk mencocokkan nol (0) atau satu contoh dari string sebelumnya. PILIH * DARI `kategori` DIMANA `nama_kategori` REGEXP 'com?'; akan memberikan semua kategori yang mengandung string com. Misalnya, komedi, komedi romantis.
. dot (.) metakarakter digunakan untuk mencocokkan karakter tunggal apa pun kecuali baris baru. PILIH * DARI film WHERE `year_released` REGEXP '200.'; akan memberikan semua film yang dirilis pada tahun-tahun yang dimulai dengan karakter “200” diikuti dengan karakter tunggal apa pun. Misalnya, 2005,2007,2008 dll.
[abc] daftar karakter [abc] digunakan untuk mencocokkan karakter mana pun yang terlampir. PILIH * DARI `film` DIMANA `judul` REGEXP '[vwxyz]'; akan memberikan semua film yang mengandung karakter tunggal apa pun di "vwxyz". Misalnya, X-Men, Da Vinci Code, dll.
[^ abc] daftar karakter [^abc] digunakan untuk mencocokkan karakter apa pun kecuali yang terlampir. PILIH * DARI `film` DI MANA `judul` REGEXP '^[^vwxyz]'; akan memberikan semua film yang mengandung karakter selain yang ada di "vwxyz".
[AZ] [AZ] digunakan untuk mencocokkan huruf besar apa pun. PILIH * DARI `anggota` DI MANA `alamat_pos` REGEXP '[AZ]'; akan memberikan semua anggota yang memiliki alamat pos berisi karakter apa saja dari A sampai Z. Misalnya Janet Jones dengan nomor keanggotaan 1.
[az] [az] digunakan untuk mencocokkan huruf kecil apa pun PILIH * DARI `anggota` DI MANA `alamat_pos` REGEXP '[az]'; akan memberikan semua anggota yang memiliki alamat pos yang berisi karakter apa pun dari a hingga z. .Misalnya Janet Jones dengan nomor keanggotaan 1.
[0-9] [0-9] digunakan untuk mencocokkan digit apa pun dari 0 hingga 9. PILIH * DARI `anggota` DIMANA `nomor_kontak` REGEXP '[0-9]' akan memberikan semua anggota telah mengirimkan nomor kontak yang berisi karakter “[0-9]”. Misalnya, Robert Phil.
^ tanda sisipan (^) digunakan untuk memulai pertandingan di awal. PILIH * DARI `film` DIMANA `judul` REGEXP '^[cd]'; memberikan semua film dengan judul yang dimulai dengan salah satu karakter dalam “cd”. Misalnya, Nama Kode Hitam, Gadis Kecil Ayah, dan Kode Da Vinci.
| garis vertikal (|) digunakan untuk mengisolasi alternatif. PILIH * DARI `film` DI MANA `judul` REGEXP '^[cd]|^[u]'; memberikan semua film dengan judul yang dimulai dengan salah satu karakter di “cd” atau “u”. Misalnya, Nama Kode Hitam, Gadis Kecil Ayah, Kode Da Vinci, dan Dunia Bawah – Awakening.
[[:<:]] [[:<:]] cocok dengan awal kata. PILIH * DARI `film` DI MANA `judul` REGEXP '[[:<:]]untuk';

memberikan semua film dengan judul yang dimulai dengan karakter. Misalnya: Melupakan Sarah Marshal.

[[:>:]] [[:>:]] cocok dengan akhir kata. PILIH * DARI `film` DI MANA `judul` REGEXP 'ack[[:>:]]';

memberikan semua film dengan judul yang diakhiri dengan karakter “ack”

.Misalnya Kode Nama Hitam.

[:kelas:] [:kelas:] cocok dengan kelas karakter yaitu

[:alfa:] untuk mencocokkan huruf, [:ruang angkasa:] untuk mencocokkan ruang putih, [:puncak:] adalah tanda baca yang cocok dan [:upper:] untuk huruf kelas atas.

PILIH * DARI `film` DI MANA `judul` REGEXP '[:alpha:]';

memberikan semua film dengan judul hanya mengandung huruf

.Misalnya Melupakan Sarah Marshal, X-Men dll.

Film seperti Pirates of the Caribbean 4 akan dihilangkan oleh kueri ini.

Garis miring terbalik (\) digunakan sebagai karakter escape. Jika kita ingin menggunakannya sebagai bagian dari pola dalam ekspresi reguler, kita harus menggunakan garis miring terbalik ganda (\\)

Kesimpulan

  • Ekspresi reguler memberikan pencocokan pola yang kuat dan fleksibel yang dapat membantu kami mengimplementasikan utilitas pencarian canggih untuk sistem database kami.
  • REGEXP adalah operator yang digunakan saat melakukan pencocokan pola ekspresi reguler. RLIKE adalah sinonimnya
  • Ekspresi reguler mendukung sejumlah metakarakter yang memungkinkan lebih banyak fleksibilitas dan kontrol saat melakukan pencocokan pola.
  • Garis miring terbalik digunakan sebagai karakter escape dalam ekspresi reguler. Garis miring terbalik hanya dipertimbangkan dalam pencocokan pola jika garis miring terbalik ganda telah digunakan.
  • Ekspresi reguler tidak peka huruf besar-kecil.