Grup Penangkap
Ekstrak substring yang cocok.
Grup Penangkap adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.
Apa Itu Grup Penangkapan
Tanda kurung ( ) dalam ekspresi reguler membuat grup penangkapan. Setelah menemukan kecocokan, Anda dapat mengambil teks dari setiap grup secara terpisah, sehingga cocok untuk mengurai data terstruktur.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("(\\d+)-(\\d+)").matcher("42-99");
if (m.find()) {
System.out.println(m.group(1));
System.out.println(m.group(2));
}
}
}Grup 0 Adalah Seluruh Kecocokan
group(0) (atau group()) mengembalikan seluruh teks yang cocok. Grup bernomor dimulai dari 1.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("(\\d+)px").matcher("width: 24px");
if (m.find()) {
System.out.println(m.group(0));
System.out.println(m.group(1));
}
}
}Menghitung Grup
groupCount() melaporkan jumlah grup penangkapan dalam pola, tidak termasuk grup 0.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("(\\d{4})-(\\d{2})-(\\d{2})").matcher("2026-05-30");
if (m.find()) System.out.println(m.groupCount());
}
}Mengurai Tanggal
Grup penangkapan memudahkan pemecahan nilai berformat menjadi beberapa bagian.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("(\\d{4})-(\\d{2})-(\\d{2})").matcher("2026-05-30");
if (m.matches()) {
System.out.println("year=" + m.group(1));
System.out.println("month=" + m.group(2));
System.out.println("day=" + m.group(3));
}
}
}Grup Bernama
Beri nama grup dengan (?<name>...) dan ambil berdasarkan namanya. Hal ini membuat pola jauh lebih mudah dibaca.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("(?<user>\\w+)@(?<host>\\w+\\.\\w+)");
Matcher m = p.matcher("alice@example.com");
if (m.find()) {
System.out.println(m.group("user"));
System.out.println(m.group("host"));
}
}
}Batas Grup
start(n) dan end(n) memberikan rentang indeks grup tertentu di dalam masukan.
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("abc123");
if (m.find()) {
System.out.println(m.start(1) + " to " + m.end(1));
}
}
}Grup Tanpa Penangkapan
Gunakan (?:...) untuk mengelompokkan alternatif atau kuantifikasi tanpa membuat tangkapan bernomor. Dengan begitu, nomor grup tetap bermakna.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("(?:Mr|Ms)\\.? (\\w+)").matcher("Ms. Smith");
if (m.find()) System.out.println(m.group(1));
}
}Grup Opsional Dapat Bernilai Kosong
Jika suatu grup bersifat opsional dan tidak berpartisipasi dalam kecocokan, group(n) mengembalikan null. Selalu tangani kasus tersebut.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("(\\d+)(px)?").matcher("50");
if (m.matches()) {
System.out.println(m.group(1));
System.out.println(m.group(2));
}
}
}Menelusuri Kecocokan dengan Grup
Gabungkan find dalam sebuah loop dengan pengambilan grup untuk mengambil token terstruktur dari teks yang lebih besar.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("(\\w+)=(\\d+)").matcher("a=1 b=2 c=3");
while (m.find()) {
System.out.println(m.group(1) + " -> " + m.group(2));
}
}
}Referensi Balik dalam Pola
Di dalam ekspresi reguler, \1 mencocokkan teks yang sama dengan yang ditangkap grup sebelumnya. Ini dapat mendeteksi pengulangan, seperti kata yang ditulis dua kali.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("(\\w+) \\1").matcher("the the cat");
System.out.println(m.find());
System.out.println(m.group(1));
}
}Menyimpan Hasil Tangkap dalam Rekaman
Pola yang rapi: cocokkan, ambil grup, lalu buat objek kecil. Di sini kita menggunakan rekaman.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
record Point(int x, int y) {}
public static void main(String[] args) {
Matcher m = Pattern.compile("\\((\\d+),(\\d+)\\)").matcher("(3,7)");
if (m.matches()) {
Point p = new Point(Integer.parseInt(m.group(1)), Integer.parseInt(m.group(2)));
System.out.println(p);
}
}
}Pemeriksaan Singkat
Apa yang dikembalikan group(0) setelah kecocokan berhasil ditemukan?
Ringkasan
Anda telah mengambil subteks yang cocok:
- Tanda kurung membuat grup bernomor;
group(0)adalah seluruh kecocokan, sedangkan 1 dan seterusnya adalah tangkapan. (?<name>...)membuat grup bernama yang dibaca melaluigroup("name").(?:...)mengelompokkan tanpa melakukan penangkapan.- Grup opsional dapat bernilai
null;\1merujuk kembali ke grup sebelumnya.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Grup Penangkap” gratis?
Ya — teks lengkap “Grup Penangkap” 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 “Grup Penangkap”?
Ekstrak substring yang cocok. 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 3 dari 4.
Berapa lama pelajaran “Grup Penangkap” 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.