Mengganti dengan Regex
replaceAll dan referensi balik.
Mengganti dengan Regex adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.
Mengganti dengan Ekspresi Reguler
Ekspresi reguler bukan hanya untuk pencarian; ekspresi ini juga dapat mengubah teks. replaceAll mengganti setiap kecocokan dengan teks pengganti.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("\\d+").matcher("a1b22c333");
System.out.println(m.replaceAll("#"));
}
}Pintasan String.replaceAll
String.replaceAll(regex, replacement) adalah satu baris kode praktis yang mengompilasi pola secara internal.
public class Main {
public static void main(String[] args) {
String cleaned = "hello world again".replaceAll("\\s+", " ");
System.out.println(cleaned);
}
}replaceFirst
replaceFirst hanya mengganti kecocokan pertama dan membiarkan kecocokan berikutnya tetap seperti semula.
public class Main {
public static void main(String[] args) {
String s = "cat cat cat".replaceFirst("cat", "dog");
System.out.println(s);
}
}Referensi Grup dalam Penggantian
Dalam teks pengganti, $1, $2, dan seterusnya menyisipkan teks yang ditangkap oleh grup tersebut. Ini dapat mengubah urutan atau format ulang konten yang cocok.
public class Main {
public static void main(String[] args) {
String iso = "30/05/2026".replaceAll("(\\d{2})/(\\d{2})/(\\d{4})", "$3-$2-$1");
System.out.println(iso);
}
}Referensi Grup Bernama
Anda juga dapat merujuk grup bernama dalam penggantian menggunakan ${name}.
public class Main {
public static void main(String[] args) {
String r = "alice@example.com"
.replaceAll("(?<user>\\w+)@(?<host>[\\w.]+)", "${user} at ${host}");
System.out.println(r);
}
}Menangani Simbol Dolar dan Garis Miring Terbalik
Karena $ dan \ memiliki makna khusus dalam penggantian, gunakan \$ untuk menuliskan dolar literal. Matcher.quoteReplacement akan melakukan pelolosan untuk Anda.
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
String price = "100".replaceAll("\\d+", Matcher.quoteReplacement("$100"));
System.out.println(price);
}
}Penggantian Terhitung dengan Fungsi replaceAll
Sejak Java 9, Matcher.replaceAll dapat menerima fungsi, sehingga Anda dapat menghitung setiap penggantian berdasarkan kecocokan.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("\\d+").matcher("a1 b2 c3");
String out = m.replaceAll(mr -> String.valueOf(Integer.parseInt(mr.group()) * 10));
System.out.println(out);
}
}Mengubah Kata yang Cocok menjadi Huruf Besar
Bentuk fungsi sangat berguna ketika penggantian bergantung pada teks yang cocok, misalnya untuk mengubah setiap kata menjadi huruf besar.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("\\b\\w").matcher("hello there world");
String title = m.replaceAll(mr -> mr.group().toUpperCase());
System.out.println(title);
}
}appendReplacement dan appendTail
Untuk mendapatkan kendali penuh, lakukan loop dengan find dan susun keluaran melalui appendReplacement, lalu appendTail. Ini adalah teknik tingkat rendah yang klasik.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("\\d+").matcher("a1b2");
StringBuilder sb = new StringBuilder();
while (m.find()) {
m.appendReplacement(sb, "[" + m.group() + "]");
}
m.appendTail(sb);
System.out.println(sb);
}
}Referensi Balik dalam Pola
Referensi balik dalam pola (\1) mencocokkan teks yang berulang, sehingga berguna untuk menghapus kata yang ditulis dua kali saat melakukan penggantian.
public class Main {
public static void main(String[] args) {
String fixed = "the the end end".replaceAll("\\b(\\w+) \\1\\b", "$1");
System.out.println(fixed);
}
}Menghapus Karakter yang Tidak Diinginkan
Salah satu penggunaan yang umum adalah membersihkan masukan dengan mengganti semua yang berada di luar kumpulan yang diizinkan dengan teks kosong.
public class Main {
public static void main(String[] args) {
String digits = "(555) 123-4567".replaceAll("[^0-9]", "");
System.out.println(digits);
}
}Pemeriksaan Singkat
Dalam teks pengganti untuk replaceAll, apa arti $2?
Ringkasan
Anda telah mengubah teks dengan ekspresi reguler:
replaceAlldanreplaceFirstmengganti kecocokan;Stringmenyediakan pintasan.$1atau${name}menyisipkan grup yang ditangkap ke dalam penggantian; lakukan pelolosan terhadap$literal dengan\$atau melaluiquoteReplacement.- Bentuk fungsi dari
replaceAllmenghitung penggantian berdasarkan setiap kecocokan. appendReplacementdanappendTailmemberikan kendali manual penuh.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengganti dengan Regex” gratis?
Ya — teks lengkap “Mengganti dengan Regex” 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 “Mengganti dengan Regex”?
replaceAll dan referensi balik. 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 4 dari 4.
Berapa lama pelajaran “Mengganti dengan Regex” 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
- Mengompilasi Pola
- Menemukan dan Mencocokkan
- Grup Penangkap
- Mengganti dengan Regex