Last Updated on April 23, 2022 by
Regular Expression adalah salah satu komponen penting yang ada di dalam suatu bahasa pemrograman. Ia merupakan urutan dari suatu karakter yang membentuk sebuah pola. Begitu pula pada Java Regex. Regex pada Java digunakan untuk mendefinisikan suatu pola tertentu untuk mencari atau memanipulasi string. Pada artikel ini kami akan mengajak Anda belajar regex pada Java.
Table of Contents
Apa itu Java Regex?
Java Regex adalah urutan karakter yang membentuk pola pencarian. Saat Anda mencari data dalam teks, Anda bisa menggunakan pola pencarian ini untuk menjelaskan apa yang Anda cari.
Regex dapat berupa karakter tunggal, atau pola yang lebih rumit. Regular Expression Java dapat digunakan untuk melakukan semua jenis pencarian teks dan operasi penggantian teks.
Java tidak memiliki kelas Regular Expression bawaan, tetapi kita dapat mengimpor paket java.util.regex untuk bekerja dengan Regular Expression Java. Paket yang tersedia dalam java.uti.regex termasuk kelas-kelas berikut:
- Pattern Class
Pattern Class digunakan sebagai representasi terkompilasi dari regex Java. Pattern Class tidak menyediakan konstruktor publik. Untuk membuat sebuah pola, Anda harus terlebih dahulu memanggil salah satu metode public static compile(), yang kemudian akan mengembalikan objek Pattern.
- Matcher Class
Matcher class adalah mesin yang menginterpretasikan pola dan melakukan operasi pencocokan terhadap string input. Seperti kelas Pattern, Matcher tidak mendefinisikan konstruktor publik. Anda mendapatkan objek Matcher dengan memanggil metode matcher() pada objek Pattern.
- PatternSyntaxException Class
PatternSyntaxException adalah pengecualian yang tidak dicentang yang menunjukkan kesalahan sintaksis dalam pola java Regex.
Menangkap Grup
Menangkap grup dalam Java Regex (capturing group) adalah cara untuk memperlakukan banyak karakter sebagai satu kesatuan. Anda bisa membuatnya dengan menempatkan karakter yang telah dikelompokkan ke dalam satu set tanda kurung. Misalnya, Regular Expression Java (dog) membuat grup tunggal yang berisi huruf “d”, “o”, dan “g”.
Capturing Group diberi nomor dengan menghitung tanda kurung buka dari kiri ke kanan. Dalam ekspresi ((A)(B(C))), misalnya, ada empat kelompok seperti berikut ini.
- ((A)(B(C)))
- (A)
- (B(C))
- (C)
Untuk mengetahui berapa banyak grup yang ada dalam ekspresi, panggil metode groupCount pada objek matcher. Metode groupCount mengembalikan int yang menunjukkan jumlah grup penangkap yang ada dalam pola matcher.
Ada juga grup khusus, grup 0, yang selalu mewakili seluruh ekspresi. Contoh berikut mengilustrasikan cara menemukan string digit dari string alfanumerik yang diberikan
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Contoh1 { public static void main(String args[]) { String nilai = " 20220422!!?;.,"; String pattern = "(.*)(\\d+)(.*)"; Pattern ptr = Pattern.compile(pattern); Matcher mtr = ptr.matcher(nilai); if (mtr.find( )) { System.out.println("Hasil: " + mtr.group(0)); System.out.println("Hasil: " + mtr.group(1)); System.out.println("Hasil: " + mtr.group(2)); } else { System.out.println("Gagal!!"); } } }
Kode di atas akan menghasilkan output seperti di bawah ini:
Hasil: 20220422!!?;., Hasil: 2022042 Hasil: 2
Syntax Java Regex
Pada Java terdapat beberapa syntax yang digunakan untuk mendefinisikan Regular Expression Java. Berikut adalah tabel yang mencantumkan semua sintaks metakarakter regex Java yang tersedia di Java.
Subexpression | Pencocokan |
^ | Cocok dengan awal baris. |
$ | Cocok dengan akhir baris. |
. | Cocok dengan karakter tunggal apa pun kecuali baris baru. Apabila Anda memakai opsi m maka Anda bisa mencocokkan baris baru juga. |
[…] | Mencocokkan karakter tunggal apa pun dalam tanda kurung. |
[^…] | Cocok dengan karakter tunggal apa pun yang tidak ada dalam tanda kurung. |
\A | Awal dari seluruh string. |
\z | Akhir dari seluruh string. |
\Z | Akhir dari seluruh string kecuali terminator baris akhir yang diizinkan. |
re* | Cocok dengan 0 atau lebih kemunculan ekspresi sebelumnya. |
re+ | Mencocokkan 1 atau lebih hal sebelumnya. |
re? | Mencocokkan 0 atau 1 kemunculan ekspresi sebelumnya. |
re{ n} | Cocok persis n jumlah kemunculan ekspresi sebelumnya. |
re{ n,} | Cocok dengan n atau lebih kemunculan ekspresi sebelumnya. |
re{ n, m} | Cocok setidaknya n dan paling banyak m kemunculan ekspresi sebelumnya. |
a| b | Cocok dengan a atau b. |
(re) | Mengelompokkan Java Regex dan mengingat teks yang cocok. |
(?: re) | Mengelompokkan regex tanpa mengingat teks yang cocok. |
(?> re) | Mencocokkan pola independen tanpa mundur. |
\w | Mencocokkan karakter kata. |
\W | Mencocokkan karakter bukan kata. |
\s | Cocok dengan spasi putih. Setara dengan [\t\n\r\f]. |
\S | Cocok dengan nonspasi putih. |
\d | Cocok dengan angka. Setara dengan [0-9]. |
\D | Cocok dengan nondigit. |
\A | Cocok dengan awal string. |
\Z | Cocok dengan akhir string. Jika ada baris baru, itu cocok sebelum baris baru. |
\z | Cocok dengan akhir string. |
\G | Cocok dengan titik di mana pertandingan terakhir selesai. |
\n | Referensi balik untuk menangkap nomor grup “n”. |
\b | Mencocokkan batas kata saat berada di luar tanda kurung. Cocok dengan spasi mundur (0x08) saat berada di dalam tanda kurung. |
\B | Mencocokkan batas bukan kata. |
\n, \t, etc. | Cocok dengan baris baru, carriage return, tab, dll. |
\Q | Escape (kutipan) semua karakter hingga \E. |
\E | Mengakhiri kutipan yang dimulai dengan \Q. |
Metode Dari Matcher Class
Berikut ini adalah metode instance yang sangat berguna dalam Java Regex.
1. Index Method
Index method menyediakan nilai index yang berguna yang menunjukkan tepatnya di mana kecocokan ditemukan di string input.
Sr.No. | Metode dan Deskripsi |
1 | public int start() Mengembalikan indeks awal pertandingan sebelumnya. |
2 | public int start(int group)
Mengembalikan indeks awal dari urutan yang ditangkap oleh grup tertentu selama operasi pencocokan sebelumnya. |
3 | public int end()
Mengembalikan offset setelah karakter terakhir cocok. |
4 | public int end(int group)
Mengembalikan offset setelah karakter terakhir dari urutan yang ditangkap oleh grup tertentu selama operasi pencocokan sebelumnya. |
2. Study Method
Study method meninjau string input dan mengembalikan Boolean yang menunjukkan apakah pola ditemukan atau tidak pada Java regex.
Sr.No. | Metode & Deskripsi |
1 | public boolean lookingAt()
Mencoba mencocokkan urutan input, mulai dari awal wilayah, dengan pola. |
2 | public boolean find()
Mencoba menemukan urutan berikutnya dari urutan input yang cocok dengan pola. |
3 | public boolean find(int start)
Mereset pencocokan ini dan kemudian mencoba menemukan urutan berikutnya dari urutan input yang cocok dengan pola, mulai dari indeks yang ditentukan. |
4 | public boolean matches()
Mencoba mencocokkan seluruh wilayah dengan pola. |
3. Replacement Method
Replacement Method adalah metode yang berguna untuk mengganti teks dalam string input.
Sr.No. | Metode & Deskripsi |
1 | public Matcher appendReplacement(StringBuffer sb, String replacement)
Menerapkan langkah append-and-replace non-terminal. |
2 | public StringBuffer appendTail(StringBuffer sb)
Menerapkan langkah tambahkan-dan-ganti terminal. |
3 | public String replaceAll(String replacement)
Mengganti setiap suburutan dari urutan input yang cocok dengan pola dengan string pengganti yang diberikan. |
4 | public String replaceFirst(String replacement)
Menggantikan urutan pertama dari urutan input yang cocok dengan pola dengan string pengganti yang diberikan. |
5 | public static String quoteReplacement(String s)
Mengembalikan String pengganti literal untuk String yang ditentukan. Metode ini menghasilkan String yang akan berfungsi sebagai pengganti literal s dalam metode appendReplacement dari kelas Matcher. |
4. Start and End Method
Berikut adalah contoh yang menghitung berapa kali kata “java” muncul di string input.
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Contoh2 { private static final String regex = "\\bjava\\b"; private static final String pesan = "Selamat belajar java !!"; public static void main(String args[]) { Pattern ptr = Pattern.compile(regex); Matcher mtr = ptr.matcher(pesan); int count = 0; while(mtr.find()) { count++; System.out.println("Kata java: "+count); System.out.println("Mulai pada baris: "+mtr.start()); System.out.println("Berakhir pada baris: "+mtr.end()); } } }
Kode di atas akan memberikan output seperti di bawah ini:
Kata java: 1 start(): 16 end(): 20
Anda dapat melihat bahwa contoh ini menggunakan batas kata untuk memastikan bahwa huruf “j” “a” “v” “a” bukan hanya substring dalam kata yang lebih panjang dalam Java regex. Ini juga memberikan beberapa informasi berguna tentang di mana dalam string input kecocokan telah terjadi.
Metode awal mengembalikan indeks awal dari urutan yang ditangkap oleh grup yang diberikan selama operasi pencocokan sebelumnya, dan akhir mengembalikan indeks karakter terakhir yang cocok, ditambah satu.
Metode Matches dan lookingAt
Metode Matches dan lookingAt keduanya mencoba mencocokkan urutan input dengan pola. Perbedaannya, bagaimanapun, adalah bahwa kecocokan membutuhkan seluruh urutan input untuk dicocokkan, sedangkan lookingAt tidak.
Kedua metode selalu dimulai di awal string input. Berikut adalah contoh yang menjelaskan fungsinya.
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Contoh3 { private static final String regex = "java"; private static final String pesan = "java adalah"; private static Pattern ptr; private static Matcher mtr; public static void main(String args[]) { ptr = Pattern.compile(regex); mtr = ptr.matcher(pesan); System.out.println("regex: "+regex); System.out.println("pesan: "+pesan); System.out.println("Hasil lookingAt: "+mtr.lookingAt()); System.out.println("Hasil matches: "+mtr.matches()); } }
Kode di atas akan menghasilkan output seperti di bawah ini:
regex: java pesan: java adalah Hasil lookingAt: true Hasil matches: false
Metode replaceFirst dan replaceAll
Metode replaceFirst dan replaceAll menggantikan teks yang cocok dengan Java Regex yang diberikan. Seperti yang ditunjukkan oleh namanya, replaceFirst menggantikan kemunculan pertama, dan replaceAll menggantikan semua kemunculan. Berikut adalah contoh yang menjelaskan fungsionalitas tersebut.
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Contoh4 { private static String regex = "bahasa"; private static String pesan = "Belajar bahasa"; private static String regex2 = "java"; public static void main(String[] args) { Pattern ptr = Pattern.compile(regex); Matcher mtr = ptr.matcher(pesan); pesan = mtr.replaceAll(regex2); System.out.println(pesan); } }
Maka berikut ini adalah hasil yang diberikan oleh kode di atas.
Belajar java
Metode appendReplacement dan appendTail
Matcher Class juga menyediakan metode appendReplacement dan appendTail untuk penggantian teks. Berikut adalah contoh yang menjelaskan fungsinya:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Contoh5 { private static String regex = "n*k"; private static String pesan = "Belajarnkjava"; private static String regex2 = " "; public static void main(String[] args) { Pattern ptr = Pattern.compile(regex); Matcher mtr = ptr.matcher(pesan); StringBuffer strbuff = new StringBuffer(); while(mtr.find()) { mtr.appendReplacement(strbuff, regex2); } mtr.appendTail(strbuff); System.out.println(strbuff.toString()); } }
Berikut adalah outputnya:
Belajar java
Metode Kelas PatternSyntaxException
PatternSyntaxException adalah pengecualian yang tidak dicentang yang menunjukkan kesalahan sintaksis dalam pola Java regex. Pada kelas PatternSyntaxException Java menyediakan berbagai metode yang membantu Anda menentukan hal-hal yang salah dalam kode Anda.
Sr.No. | Metode & Deskripsi |
1 | public String getDescription()
Mengambil deskripsi kesalahan. |
2 | public int getIndex()
Mengambil indeks kesalahan. |
3 | public String getPattern()
Mengambil pola regex yang salah. |
4 | public String getMessage()
Mengembalikan string multi-line yang berisi deskripsi kesalahan sintaks dan indeksnya, pola regex yang salah, dan indikasi visual indeks kesalahan dalam pola. |
Demikianlah penjelasan tentang Java Regex. Jika Anda ingin menjadi programmer Java yang handal, Anda perlu belajar regex agar bisa membuat program terbaik. Jika Anda ingin belajar lebih banyak tentang Java, jangan lupa kunjungi Codekey di https://codekey.id/ dan dapatkan berbagai materi gratis seputar pemrrograman.
Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.