Tutorial Cara Penggunaan Regular Expressions Bahasa Java

Untuk pengolahan teks yang lebih rumit, biasanya kita butuh bantuan Regular Expressions atau sering disingkat sebagai Regex. Regex dapat digunakan untuk mencari, mengganti, atau memanipulasi string.

Dalam tutorial Duniailkom kali ini kita akan bahas cara penggunaan RegEx dalam bahasa pemrograman Java.


Pengertian Regular Expressions

Regular expressions (regex) adalah serangkaian karakter yang membentuk sebuah search pattern (pola pencarian). Regex dapat berupa karakter tunggal, atau pola lain yang lebih rumit. Regex biasanya digunakan dalam operasi pencarian teks atau replace teks.

Dalam bahasa pemrograman, regex dapat digunakan untuk berbagai keperluan, diantaranya:

  • Pencarian dan validasi data:
    • Mencari string yang mengandung karakter tertentu
    • Mencari string yang memenuhi kriteria tertentu
    • Memvalidasi format data
  • Manipulasi teks
    • Mengganti teks
    • Menghapus teks
    • Memecah teks

Karakter-Karakter yang Dapat Digunakan dalam Regex

Regex dapat menggunakan berbagai karakter untuk membentuk pola pencarian. Berikut beberapa karakter yang dapat digunakan dalam regex:

  • Karakter dasar
    • . : Menandakan sembarang karakter
    • * : Menandakan nol atau lebih karakter
    • + : Menandakan satu atau lebih karakter
    • ? : Menandakan nol atau satu karakter
    • [] : Menandakan satu karakter dari daftar karakter
  • Karakter spesial
    • ^ : Menandakan awal string
    • $ : Menandakan akhir string
    • | : Menandakan OR
    • () : Menandakan grup
    • {} : Menandakan pengulangan

Cara Menggunakan RegExp dalam Bahasa Java

Java tidak memiliki kelas Regular Expression bawaan, tetapi kita dapat mengimpor paket java.util.regex untuk bekerja dengan regex. Paket ini mencakup beberapa class berikut:

  • Pattern class – Mendefinisikan pola yang akan digunakan dalam pencarian.
  • Matcher class – Digunakan untuk mencari pola.
  • PatternSyntaxException class – Menunjukkan kesalahan sintaks dalam pola regex.

Berikut contoh kode program Java untuk memeriksa apakah kata "duniailkom" ada di dalam sebuah kalimat atau tidak:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class BelajarJava {
  public static void main(String[] args) {

    String kalimat = "Kunjungi duniailkom untuk belajar bahasa Java";

    Pattern pattern = Pattern.compile("Duniailkom", 
                      Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(kalimat);

    boolean matchFound = matcher.find();
    if(matchFound) {
      System.out.println("String ditemukan");
    } else {
      System.out.println("String tidak ditemukan");
    }
    
  }
}

Hasil kode program:

"String ditemukan"

Dalam contoh ini kata "duniailkom" akan diperiksa apakah ada di dalam string kalimat atau tidak.

Di baris 9, pola dibuat menggunakan method Pattern.compile(). Parameter pertama di isi dengan pola yang akan dicari, sedangkan parameter kedua yang bersifat opsional dipakai untuk menginput flag atau info tambahan.

Disini saya menambah flag Pattern.CASE_INSENSITIVE agar pencarian dilakukan secara case-insensitive, dimana tidak akan membedakan huruf besar dan huruf kecil. Jadi string "duniailkom" dan "Duniailkom" akan dianggap sama.

Ada beberapa flag lain yang bisa kita gunakan dalam method compile() untuk mengubah cara pencarian dilakukan. Berikut adalah beberapa di antaranya:

  • Pattern.CASE_INSENSITIVE: Huruf besar dan kecil dianggap sama.
  • Pattern.LITERAL: Karakter khusus dalam pola tidak akan memiliki makna khusus dan akan diperlakukan sebagai karakter biasa.
  • Pattern.UNICODE_CASE: Dipakai bersama CASE_INSENSITIVE untuk mengabaikan huruf besar dan kecil karakter Unicode.

Method matcher() di baris 11 dipakai untuk mencari pola dalam sebuah string. Method ini mengembalikan Matcher object yang berisi informasi tentang pencarian yang dilakukan.

Method find() mengembalikan true jika pola ditemukan dalam string dan false jika tidak ditemukan.

Untuk keperluan yang lebih rumit, kita bisa memakai karakter khusus seperti contoh berikut:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class BelajarJava {
  public static void main(String[] args) {

    String kalimat = "Kunjungi duniailkom untuk belajar bahasa Java";

    Pattern pattern = Pattern.compile("[a-z][0-9]+", 
                      Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(kalimat);

    boolean matchFound = matcher.find();
    if(matchFound) {
      System.out.println("String ditemukan");
    } else {
      System.out.println("String tidak ditemukan");
    }

  }
}

Hasil kode program:

String tidak ditemukan

Di baris 9, kita memakai pola "[a-z][0-9]+". Ini adalah pola regex yang akan di cek dengan string input.

Pola ini terdiri dari dua bagian:

  • [a-z]: Ini adalah karakter range dari a sampai z, yang berarti akan cocok dengan semua huruf kecil.
  • [0-9]+: Ini adalah karakter range dari 0 sampai 9, yang berarti mencocokkan semua angka. Tanda "+" menunjukkan bahwa angka dapat muncul satu kali atau lebih.

Hasilnya tidak ditemukan karena tidak ada satupun kata yang diakhiri dengan suatu angka.

Namun jika isi string kalimat kita ganti menjadi ini:

String kalimat = "Kunjungi duniailkom untuk belajar bahasa Java1";

Maka kata "Java1" di akhir kalimat akan cocok dengan pola regular expression "[a-z][0-9]+".

Regex dalam Java juga mendukung fitur-fitur lanjutan seperti grouping, lookahead, lookbehind, dan lainnya yang memungkinkan kita untuk melakukan pencocokan pola yang lebih kompleks dan spesifik.

Dalam penggunaan regex, penting untuk memperhatikan performa karena pola regex yang kompleks dapat mempengaruhi kinerja aplikasi.

Selain itu, pemahaman yang baik tentang sintaks dan karakter khusus dalam regex juga diperlukan untuk mencapai hasil yang diinginkan.

Dengan menggunakan regular expression, kita dapat menghasilkan kode yang lebih efektif dan fleksibel dalam memanipulasi dan mencocokkan pola pada string. Regex adalah alat yang sangat berguna dalam pengembangan aplikasi Java yang melibatkan pemrosesan teks.


Demikian tutorial singkat kita mengenai cara penggunaan Regular Expressions dalam bahasa pemrograman Java.

Add Comment