unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Regex

Regex #

Regex (Regular Expression) di Java adalah pola pencarian atau pola penggambaran yang digunakan untuk mencocokkan urutan karakter dalam teks. Regex sangat berguna untuk berbagai operasi teks, seperti pencarian, pemformatan, dan validasi input. Java menyediakan dukungan yang kuat untuk Regex melalui kelas-kelas di dalam paket java.util.regex, seperti Pattern dan Matcher.

Dasar Regex #

Regex memungkinkan Anda untuk menggambarkan pola teks yang ingin Anda temukan, seperti “semua angka dalam teks”, “alamat email yang valid”, atau “semua kata yang diawali dengan huruf besar”.

Kelas Utama #

  1. Pattern: Kelas ini mewakili pola Regex yang telah dikompilasi. Pola ini digunakan oleh Matcher untuk mencocokkan urutan karakter.

  2. Matcher: Kelas ini digunakan untuk melakukan pencocokan pada urutan karakter (seperti String) terhadap Pattern yang telah dikompilasi.

Contoh Dasar #

import java.util.regex.*;

public class ContohRegex {
    public static void main(String[] args) {
        // Pola Regex untuk menemukan angka dalam teks
        String regex = "\\d+";
        String teks = "Saya memiliki 123 apel dan 456 jeruk.";

        // Kompilasi pola
        Pattern pattern = Pattern.compile(regex);

        // Buat matcher dari teks yang akan dicocokkan
        Matcher matcher = pattern.matcher(teks);

        // Temukan semua kecocokan
        while (matcher.find()) {
            System.out.println("Ditemukan: " + matcher.group());
        }
    }
}

Penjelasan:

  • \\d+: Pola regex ini mencocokkan satu atau lebih digit angka.
  • Pattern.compile(regex): Mengkompilasi regex menjadi Pattern.
  • matcher.find(): Mencari kecocokan dalam teks, satu per satu.
  • matcher.group(): Mengembalikan kecocokan yang ditemukan.

Operator dan Karakter Khusus #

  • Karakter Dasar

    • .: Mencocokkan sembarang karakter kecuali baris baru.
    • \d: Mencocokkan digit angka (sama dengan [0-9]).
    • \D: Mencocokkan semua karakter yang bukan digit angka.
    • \w: Mencocokkan karakter alfanumerik dan underscore (sama dengan [a-zA-Z0-9_]).
    • \W: Mencocokkan semua karakter yang bukan alfanumerik dan underscore.
    • \s: Mencocokkan spasi (termasuk spasi, tab, dan baris baru).
    • \S: Mencocokkan semua karakter yang bukan spasi.
  • Anchors

    • ^: Mencocokkan awal teks atau awal baris.
    • $: Mencocokkan akhir teks atau akhir baris.
  • Quantifiers

    • *: Mencocokkan nol atau lebih kemunculan pola sebelumnya.
    • +: Mencocokkan satu atau lebih kemunculan pola sebelumnya.
    • ?: Mencocokkan nol atau satu kemunculan pola sebelumnya.
    • {n}: Mencocokkan tepat n kemunculan pola sebelumnya.
    • {n,}: Mencocokkan n atau lebih kemunculan pola sebelumnya.
    • {n,m}: Mencocokkan setidaknya n dan paling banyak m kemunculan pola sebelumnya.
  • Character Classes

    • [abc]: Mencocokkan salah satu karakter a, b, atau c.
    • [^abc]: Mencocokkan semua karakter kecuali a, b, dan c.
    • [a-z]: Mencocokkan karakter dalam rentang a hingga z.

Implementasi Regex #

Validasi Alamat Email #

Regex sering digunakan untuk memvalidasi format alamat email.

import java.util.regex.*;

public class ValidasiEmail {
    public static void main(String[] args) {
        String regex = "^[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,6}$";
        String email = "[email protected]";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(email);

        if (matcher.matches()) {
            System.out.println("Email valid.");
        } else {
            System.out.println("Email tidak valid.");
        }
    }
}

Penjelasan:

  • ^[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,6}$: Pola ini mencocokkan alamat email yang dimulai dengan karakter alfanumerik atau titik atau tanda hubung, diikuti oleh @, kemudian domain, dan diakhiri dengan ekstensi domain 2-6 karakter.

Pencarian dan Penggantian Teks #

Regex dapat digunakan untuk mencari dan mengganti teks dalam string.

public class PenggantianTeks {
    public static void main(String[] args) {
        String regex = "\\d";
        String teks = "Nomor saya adalah 123-456-7890.";
        String hasil = teks.replaceAll(regex, "*");

        System.out.println(hasil); // Output: Nomor saya adalah ***-***-****.
    }
}

Penjelasan:

  • teks.replaceAll(regex, "*"): Mengganti semua digit dalam string dengan *.

Memecah String dengan Regex #

Anda dapat menggunakan regex untuk memecah string berdasarkan pola tertentu.

public class PecahString {
    public static void main(String[] args) {
        String regex = "\\s+";
        String teks = "Ini adalah contoh teks.";
        String[] kata = teks.split(regex);

        for (String k : kata) {
            System.out.println(k);
        }
    }
}

Penjelasan:

  • teks.split(regex): Memecah string berdasarkan satu atau lebih spasi (\\s+).

Menemukan Kata-kata dalam Teks #

Mencari dan mencetak semua kata dalam sebuah teks.

import java.util.regex.*;

public class TemukanKata {
    public static void main(String[] args) {
        String regex = "\\b\\w+\\b";
        String teks = "Selamat datang di dunia Java!";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(teks);
        
        while (matcher.find()) {
            System.out.println("Kata: " + matcher.group());
        }
    }
}

Penjelasan:

  • \\b\\w+\\b: Pola ini mencocokkan kata, yang didefinisikan sebagai satu atau lebih karakter alfanumerik yang dikelilingi oleh batas kata (\\b).

Kesimpulan #

Regex di Java adalah alat yang sangat kuat untuk bekerja dengan teks. Dengan memanfaatkan kelas Pattern dan Matcher, Anda dapat:

  • Mencari teks berdasarkan pola tertentu.
  • Memvalidasi input seperti alamat email, nomor telepon, dan lainnya.
  • Memecah string menjadi bagian-bagian yang lebih kecil.
  • Mengganti bagian dari teks berdasarkan pola yang Anda tentukan.

Dengan memahami dan menerapkan Regex, Anda dapat membuat kode yang lebih efisien dan efektif untuk berbagai tugas pemrosesan teks.

« Date Time
build Tools »