Apa itu Regular Expression?
Regular expression adalah urutan karakter yang membentuk pola pencarian. Ketika Anda mencari data dalam teks, Anda dapat menggunakan pola pencarian ini untuk menjelaskan apa yang Anda cari.
Regular expression bisa jadi sebuah karakter tunggal, atau pola yang lebih rumit.
Regular Expression dapat digunakan untuk melakukan semua tipe dari operasi pencarian teks dan mengganti teks.
Java tidak memiliki class built-in regular expression, tapi kita dapat mengimport package java.util.regex untuk bekerja dengan regular expression. Package tersebut mengandung class berikut :
- Pattern Class– mendefinisikan sebuah pola (untuk digunakan dalam pencarian)
- Matcher Class – digunakan untuk mencari pola
- PatternSyntaxException Class – menunjukan kesalahan sintaks dalam pola regular expression
Contoh, mencari tahu apakah ada kemunculan kata “nextgen” dalam sebuah kalimat :
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern pola = Pattern.compile("nextgen", Pattern.CASE_INSENSITIVE);
Matcher matcher = pola.matcher("Kunjungi Nextgen.co.id");
boolean cari = matcher.find();
if (cari) {
System.out.println("Kata ditemukan!");
} else {
System.out.println("Kata tidak ditemukan!");
}
}
}
Output :
Kata ditemukan!
Penjelasan Contoh
Pada contoh di atas, mencari kata “nextgen” pada sebuah kalimat.
Pertama, pola dibuat dulu menggunakan method Pattern.compile(). Parameter pertama menunjukkan pola yang mana yang sedang dicari dan parameter kedua memiliki tanda untuk menunjukkan bahwa pencarian harus case-insensitive. Parameter kedua merupakan opsional.
Method matcher() digunakan untuk mencari pola di dalam sebuah string. Method matcher mengembalikan sebuah object matcher yang mengandung informasi tentang pencarian yang dilakukan.
Method find() mengembalikan nilai true jika pola ditemukan di dalam string dan false jika tidak ditemukan.
Flags
Flags/Tanda pada method compile() mengubah bagaimana pencarian dilakukan. Berikut beberapa diantaranya :
- Pattern.CASE_INSENSITIVE – Huruf kapital besar atau kapital kecil akan diabaikan ketika melakukan pencarian.
- Pattern.LITERAL – Karakter khusus di dalam pola tidak akan memiliki arti khusus dan akan diperlakukan sebagai karakter biasa ketika melakukan pencarian
- Pattern.UNICODE_CASE – Digunakan bersama dengan tanda CASE_INSENSITIVE untuk juga mengabaikan huruf besar-kecil di luar alfabet English.
Pola Regular Expression
Parameter pertama dari method Pattern.compile() merupakan pola, menjelaskan apa yang akan dicari. Kurung digunakan untuk mencari jangkauan karakter :
Expression | Deskripsi |
[abc] | Mencari satu karakter dari opsi diantara kurung |
[^abc] | Mencari satu karakter yang tidak ada diantara kurung |
[0-9] | Mencari satu karakter dari jangkauan 0 sampai 9 |
Metakarakter
Metakarakter adalah karakter dengan arti khusus :
Metakarakter | Deskripsi |
| | Mencari kesesuaian untuk salah satu pola yang dipisahkan oleh | seperti dalam : kucing|ikan|anjing |
. | Mencari hanya satu karakter apapun |
^ | Mencari kesesuaian pada awal dari string, seperti : ^Hallo |
$ | Mencari kesesuaian pada akhir dari string, seperti : Dunia$ |
\d | Mencari sebuah digit |
\s | Mencari karakter spasi |
\b | Mencari kesesuaian pada awal dari kata, seperti : \bKATA, atau pada akhir dari kata seperti ini : KATA\b |
\uxxxx | Mencari karakter unicode yang ditentukan oleh angka heksadesimal xxxx |
Quatifiers
Kuantifier/quantifiers mendefinisikan kuantiti :
Quantifier | Deskripsi |
n+ | Cocok dengan string apapun yang berisi setidaknya satu n |
n* | Cocok dengan string apapun yang berisi setidaknya nol atau lebih dari kemunculan n |
n? | Cocok dengan string apapun yang berisi setidaknya nol atau satu dari kemunculan n |
n{x} | Cocok dengan string apapun yang berisi urutan dari X n’s |
n{x,y} | Cocok dengan string apapun yang berisi urutan dari X ke Y n’s |
n{x,} | Cocok dengan string apapun yang berisi urutan setidaknya X n’s |
Catatan: Jika ekspresi Anda perlu mencari salah satu karakter khusus, Anda dapat menggunakan garis miring terbalik ( \ ) untuk menghindarinya. Di Java, garis miring terbalik dalam string perlu diloloskan, jadi dua garis miring terbalik perlu untuk meloloskan karakter khusus. Seperti contoh, untuk mencari satu atau lebih tanda tanya Anda dapat menggunakan ekspresi berikut : “\\?”
Tutorial sebelumnya : Exception Handling Pada Java
Tutorial setelahnya : Thread Pada Java
Semua Tutorial JAVA : Tutorial JAVA