SQL - Regex
SQL - Regex
8 Mei 2023
Learning Outcome
● Mengenal apa itu REGEX dan bagaimana penggunaannya di MySQL
● Dapat menggunakan konstruksi regex lanjutan Grouping, Capturing
and Non-capturing Group untuk menyederhanakan penulisan
ekspresi
Learning Outcome
1. Karakter yang ditemukan terlebih dahulu dari paling kiri yang akan
diambil.
2. REGEX terdiri dari kombinasi karakter literal dan metacharacter.
Teks Literal
1.Teks literal adalah pola REGEX yang akan dicocokkan persis atau apa
adanya dengan teks yang akan dibandingkan.
2.Teks literal terdiri dari huruf karakter apapun kecuali $()*+.?[]\^{|
yang disebut sebagai metacharacter. Dengan menggunakan tanda
backslash \ di depan karakter tersebut akan dikenali sebagai karakter
literal
Teks Literal
Non-Printable Deskripsi
Character
\t tab (tabulasi horizontal) ('\u0009')
\n line feed (pergantian baris) ('\u000A')
\v vertikal tab (Tabulasi vertikal) ('\u000B')
\f form-feed (pergantian baris) ('\u000C')
\r carriage-return (pergantian baris) ('\u000D')
\angka angka octal yang merepresentasikan ASCII (misal : \13)
\xangka angka hexadecimal yang merepresentasikan ASCII (misal : \xB)
\uangka angka hexadecimal yang merepresentasikan Unicode (misal : \u000B)
Class Shorthand
Penulisan singkat dari rangkaian karakter tertentu yang sudah umum
dikategorisasikan, misalkan rangkaian angka, rangkaian huruf, dan lain-
lain.
Contoh:
• Penggunaan quantifier grouping (ha)+ akan cocok dengan teks hahaha
• Penggunaan alternation di grouping be(tul|nar) akan cocok dengan teks betul
maupun benar
Group Capturing
1. Pola Grouping yang cocok secara default akan dimasukkan dalam memori secara terurut
dan disebut sebagai capturing group
2. Referensi untuk capturing group (backference) ini pada setiap implementasi aplikasi
berbeda, tapi secara umum adalah menggunakan prefix backslash (\) atau dollar ($) diikuti
dengan nomor urut group
Contoh
3. Regex .+(aku).+(B.+) pada teks Nama aku adalah Budi akan mendapatkan dua capturing
Contoh:
1. Regex .+(aku).+(?:B.+) pada teks Nama aku adalah Budi akan mendapatkan satu
capturing group saja, yaitu aku. Ini karena pada grouping kedua kita tambahkan
modifier non-capturing.
2. Pada contoh capturing group di atas, backreference \1 adalah aku, sedangkan
select email,
substr(regexp_substr(email, '@.+'),2)
from ms_people mp;
Referensi
● https://dev.mysql.com/doc/refman/8.0/en/regexp.html