Apa itu Ekspresi Reguler? Penjelasan Lengkap
Jawaban Cepat
Ekspresi reguler adalah pola yang mendeskripsikan sekumpulan string. Menggunakan karakter literal (cocok dengan dirinya sendiri) dan metakarakter (*, +, ?, ., ^, $, [], (), {}, |, \) dengan arti khusus. Regex digunakan untuk validasi, pencarian, ekstraksi, dan penggantian. Gunakan Penguji Regex gratis kami untuk menguji pola terhadap teks di browser Anda.
Perkenalan
Ekspresi reguler (regex atau regexp) adalah rangkaian karakter yang mendefinisikan pola pencarian. Pola ini digunakan oleh algoritma pencarian string untuk menemukan, mencocokkan, atau mengganti teks. Ekspresi reguler berasal dari teori bahasa formal pada tahun 1950an (Stephen Kleene) dan diadopsi ke dalam alat teks Unix (grep, sed, awk) pada tahun 1970an. Saat ini, regex dibangun di hampir semua bahasa pemrograman dan editor teks. Regex sangat kuat — ia dapat memvalidasi format email, mengekstrak data dari log, dan menemukan pola yang rumit — namun sintaksisnya padat dan terkenal sulit dibaca.
Langkah demi Langkah
-
Memahami literal dan metakarakter
Karakter literal (a, b, 1, @) cocok dengan dirinya sendiri. Metakarakter memiliki arti khusus: . cocok dengan karakter apa pun, * berarti nol atau lebih, + berarti satu atau lebih, ? berarti nol atau satu, ^ pertandingan dimulai, $ pertandingan berakhir.
-
Pelajari kelas karakter
Tanda kurung siku [] mendefinisikan kelas karakter — [aeiou] cocok dengan vokal apa pun, [0-9] cocok dengan digit apa pun, [^0-9] cocok dengan non-digit apa pun. Kelas singkatan: \d (digit), \w (karakter kata), \s (spasi putih), dan negasi huruf besarnya.
-
Gunakan bilangan
Quantifier menentukan berapa kali suatu pola diulang: * (0+), + (1+), ? (0 atau 1), {n} (tepatnya n), {n,} (n+), {n,m} (n ke m). Serakah secara default; menambahkan ? untuk pencocokan malas (misalnya, *?).
-
Kelompok dan jangkar
Tanda kurung () membuat grup tangkapan. Pergantian | cocok dengan kedua sisi (kucing|anjing). Jangkar ^ dan $ cocok dengan awal dan akhir string. Gunakan ini untuk membangun pola kompleks dari pola yang lebih sederhana.
Contoh
Cocokkan pola seperti email
Masukan: Pattern: [a-z]+@[a-z]+\.[a-z]+
Keluaran: Cocok: alice@example.com, bob@test.org
Cocokkan format nomor telepon
Masukan: Pattern: \d{3}-\d{3}-\d{4}
Keluaran: Matches: 555-123-4567
Ekstrak pasangan nilai kunci
Masukan: Pattern: (\w+)=(\w+)
Keluaran: Matches 'key=value' with group 1 as key, group 2 as value
Masalah Umum
- Pencocokan serakah memakan waktu berlebihan —.* mencocokkan sebanyak mungkin. Menggunakan .*? untuk pencocokan malas untuk menemukan kecocokan terpendek.
- Lupa keluar dari karakter khusus —., *, +, ?, dll. adalah karakter spesial. Gunakan \ untuk mencocokkannya secara harfiah (misalnya, \. cocok dengan titik literal).
- Pelacakan mundur yang dahsyat —pola dengan bilangan bertingkat (misalnya, (a+)+) dapat memakan waktu eksponensial pada masukan tertentu, sehingga menyebabkan serangan ReDoS.
- Pencocokan berlebihan —tanpa jangkar (^ dan $), suatu pola cocok di mana saja. Gunakan ^...$ untuk mencocokkan seluruh string.
Kiat
- Mulai dari yang sederhana dan tambahkan kerumitan secara bertahap —men-debug regex yang kompleks sekaligus sangatlah sulit.
- Gunakan penguji regex untuk bereksperimen dengan pola terhadap contoh teks —lihat kecocokan yang disorot secara real-time.
- Komentari regex yang kompleks menggunakan mode yang diperluas (tanda/x di beberapa mesin) atau pisahkan menjadi beberapa bagian yang diberi nama.
- Gunakan Penguji Regex kami untuk menguji pola secara instan di browser Anda —tidak perlu mendaftar, sepenuhnya pribadi.