0Pricing
Java Academy · Pelajaran

Mengompilasi Pola

Pattern.compile dan Matcher.

Mengompilasi Pola adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.

Pasangan Pattern dan Matcher

Regex Java berada di dalam java.util.regex. Pattern adalah ekspresi reguler yang telah dikompilasi; Matcher menerapkan pola tersebut pada masukan tertentu.

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

public class Main {
    public static void main(String[] args) {
        Pattern p = Pattern.compile("\\d+");
        Matcher m = p.matcher("abc123");
        System.out.println(m.find());
    }
}

Kompilasi Sekali, Gunakan Berulang Kali

Pattern.compile relatif mahal. Kompilasikan pola sekali dan gunakan kembali pada banyak masukan, bukan mengompilasinya ulang dalam sebuah loop.

import java.util.regex.Pattern;

public class Main {
    static final Pattern DIGITS = Pattern.compile("\\d+");

    public static void main(String[] args) {
        System.out.println(DIGITS.matcher("a1").find());
        System.out.println(DIGITS.matcher("bb").find());
    }
}

Penulisan Garis Miring Terbalik di Java

Token ekspresi reguler seperti \d memerlukan garis miring terbalik, tetapi string Java juga menggunakan garis miring terbalik sebagai karakter pelolosan. Jadi, dalam kode sumber, Anda menulis \\d untuk menyatakan ekspresi reguler \d.

import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        Pattern word = Pattern.compile("\\w+");
        System.out.println(word.matcher("hello").matches());
    }
}

Membuat Matcher

pattern.matcher(input) mengikat pola ke teks masukan dan mengembalikan Matcher baru yang melacak posisi.

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

public class Main {
    public static void main(String[] args) {
        Pattern p = Pattern.compile("cat");
        Matcher m = p.matcher("the cat sat");
        System.out.println(m.find());
    }
}

Matcher Memiliki Status

Matcher menyimpan status yang dapat diubah (posisi saat ini dan kecocokan terakhir). Buat Matcher baru untuk setiap masukan; jangan berbagi satu Matcher di antara utas.

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

public class Main {
    public static void main(String[] args) {
        Pattern p = Pattern.compile("\\d");
        Matcher m = p.matcher("a1b2");
        System.out.println(m.find());
        System.out.println(m.find());
    }
}

Bendera Tanpa Pembedaan Huruf Besar-Kecil

Teruskan bendera sebagai argumen kedua ke compile. Pattern.CASE_INSENSITIVE mengabaikan perbedaan huruf besar-kecil.

import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
        System.out.println(p.matcher("I love JAVA").find());
    }
}

Menggabungkan Bendera

Gabungkan bendera dengan operator OR bit per bit. Di sini kita menambahkan MULTILINE agar jangkar cocok pada setiap baris.

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

public class Main {
    public static void main(String[] args) {
        Pattern p = Pattern.compile("^a", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
        Matcher m = p.matcher("apple\nApricot");
        int count = 0;
        while (m.find()) count++;
        System.out.println(count);
    }
}

Pintasan matches Statis

Pattern.matches(regex, input) adalah pembantu sekali pakai yang mengompilasi dan menguji dalam satu pemanggilan. Praktis, tetapi mengompilasi ulang setiap kali.

import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        System.out.println(Pattern.matches("\\d{3}", "123"));
        System.out.println(Pattern.matches("\\d{3}", "12"));
    }
}

Memisahkan dengan Pola

Pola yang telah dikompilasi dapat memisahkan teks melalui split, dengan menggunakan kembali ekspresi reguler terkompilasi yang sama secara efisien.

import java.util.Arrays;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        Pattern comma = Pattern.compile("\\s*,\\s*");
        String[] parts = comma.split("a, b ,c,  d");
        System.out.println(Arrays.toString(parts));
    }
}

Memeriksa Pola

pattern() mengembalikan teks ekspresi reguler asli dan flags() mengembalikan bendera aktif sebagai bilangan bulat.

import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        Pattern p = Pattern.compile("[a-z]+", Pattern.CASE_INSENSITIVE);
        System.out.println(p.pattern());
        System.out.println(p.flags());
    }
}

Pola Tidak Valid Menyebabkan Pengecualian

Ekspresi reguler yang cacat menimbulkan PatternSyntaxException pada saat compile, sehingga Anda dapat menangani kesalahan lebih awal.

import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

public class Main {
    public static void main(String[] args) {
        try {
            Pattern.compile("[unclosed");
        } catch (PatternSyntaxException e) {
            System.out.println("Invalid regex");
        }
    }
}

Pemeriksaan Singkat

Mengapa Anda sebaiknya mengompilasi ekspresi reguler yang sering digunakan ke dalam variabel Pattern statis?

Ringkasan

Anda telah mengompilasi pola:

  • Pattern.compile membuat pola yang dapat digunakan kembali, tidak dapat diubah, dan aman untuk utas; matcher mengikatnya ke masukan.
  • Gunakan \\ untuk menulis garis miring terbalik ekspresi reguler dalam kode sumber Java.
  • Bendera seperti CASE_INSENSITIVE dan MULTILINE digabungkan dengan OR bit per bit.
  • Matcher menyimpan status, jadi buat satu untuk setiap masukan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengompilasi Pola” gratis?

Ya — teks lengkap “Mengompilasi Pola” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mengompilasi Pola”?

Pattern.compile dan Matcher. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Java Academy?

Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Mengompilasi Pola” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengompilasi Pola
  2. Menemukan dan Mencocokkan
  3. Grup Penangkap
  4. Mengganti dengan Regex
← Kembali ke Java Academy