Menu
CoddyTech

Pencocokan Pola dengan Regex

Termasuk bagian Logika & Alur dalam perjalanan Java di Coddy. Pelajaran 47 dari 59.

class Pattern dan Matcher menyediakan alat yang canggih untuk operasi regex di Java. Pertama, mari pahami cara menggunakannya:

Buat pattern menggunakan Pattern.compile():

Pattern pattern = Pattern.compile("cat");
// Membuat pola untuk menemukan "cat"

Buat matcher untuk teksmu:

String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Membuat matcher untuk teks tersebut

Sekarang kamu dapat menemukan kecocokan menggunakan matcher.find():

while (matcher.find()) {
   System.out.println("Found at: " + matcher.start());
}

Setelah menjalankan kode di atas, outputnya adalah: Found at: 4

Memahami method:

  • matcher.find() - Mencari kemunculan pola berikutnya dalam teks
    • Mengembalikan true jika kecocokan ditemukan
    • Mengembalikan false jika tidak ada lagi kecocokan
    • Itulah alasan kita menggunakannya dalam perulangan while, untuk menemukan semua kemunculan
  • matcher.start() - Mengembalikan indeks awal (posisi) dari kecocokan terakhir yang ditemukan oleh find()
    • Dalam contoh kita, "cat" dimulai pada indeks 4 dalam "The cat and dog"
    • Harus dipanggil setelah find() berhasil

Contoh dengan beberapa kecocokan:

Pattern pattern = Pattern.compile("cat");
Matcher matcher = pattern.matcher("cat and cat");
while (matcher.find()) {
   System.out.println("Found at: " + matcher.start());
}
// output:
// Found at: 0
// Found at: 8
challenge icon

Tantangan

Mudah

Buat method bernama findWords yang menerima dua argumen:

  1. Sebuah String (text) untuk mencari di dalamnya
  2. Sebuah String (word) yang akan dicari

Method tersebut harus:

  1. Menggunakan Pattern dan Matcher untuk menemukan semua kemunculan kata tersebut
  2. Mengembalikan string yang berisi posisi tempat kata tersebut ditemukan
  3. Memisahkan posisi dengan spasi

Pesan yang dikembalikan harus berupa:

  • Jika ada input yang bernilai null: kembalikan "Invalid input"
  • Jika kata tidak ditemukan: kembalikan "Not found"
  • Jika ditemukan: kembalikan posisi (misalnya, "4 10 15")

Coba sendiri

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

public class Main {
    public static String findWords(String text, String word) {
        // Tulis kodemu di sini
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String text = scanner.nextLine();
        String word = scanner.nextLine();
        
        if (text.equals("null")) text = null;
        if (word.equals("null")) word = null;
        
        System.out.println(findWords(text, word));
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika & Alur

Latihan sendiri: Compiler Java online

Uji pola pada teksmu sendiri: Penguji Regex