Mencari dan Memadankan
matches, find, lookingAt
Mencari dan Memadankan ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Java Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Java Academy merangkumi sejumlah 4 pelajaran.
Tiga Cara Menggunakan Corak
Matcher menawarkan tiga ujian utama:
matches()memerlukan keseluruhan masukan sepadan.lookingAt()memerlukan padanan pada permulaan.find()mencari padanan di mana-mana tempat.
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("42");
System.out.println(m.matches());
}
}matches: Keseluruhan Masukan
matches mengembalikan benar hanya jika seluruh rentetan mematuhi corak, seolah-olah corak itu mempunyai penambat pada kedua-dua hujung.
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d+");
System.out.println(p.matcher("123").matches());
System.out.println(p.matcher("123abc").matches());
}
}lookingAt: Padanan pada Permulaan
lookingAt berjaya jika masukan bermula dengan padanan, walaupun bahagian selebihnya tidak sepadan.
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d+");
System.out.println(p.matcher("123abc").lookingAt());
System.out.println(p.matcher("abc123").lookingAt());
}
}find: Padanan di Mana-mana Tempat
find mengimbas ke hadapan untuk mencari padanan seterusnya. Ia mengembalikan benar jika terdapat padanan dari kedudukan semasa dan seterusnya.
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d+");
System.out.println(p.matcher("abc123def").find());
}
}Mengulangi Semua Padanan dengan find
Memanggil find dalam gelung akan melangkah melalui setiap padanan 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("a1bb22ccc333");
while (m.find()) {
System.out.println(m.group());
}
}
}Kedudukan Padanan: start dan end
Selepas padanan berjaya, start() dan end() memberikan julat indeks, manakala group() memberikan teks yang sepadan.
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.group() + " at [" + m.start() + "," + m.end() + ")");
}
}
}Penambat dengan find
Penambat ^ dan $ membolehkan find bertindak seperti semakan permulaan atau penghujung. Di sini ^\d+ hanya sepadan dengan digit pada permulaan mutlak.
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("^\\d+");
System.out.println(p.matcher("123abc").find());
System.out.println(p.matcher("abc123").find());
}
}Menetapkan Semula Pemadan
reset() mengundurkan pemadan ke permulaan supaya anda boleh mengimbas masukan yang sama sekali lagi.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("a").matcher("aaa");
int first = 0;
while (m.find()) first++;
m.reset();
int second = 0;
while (m.find()) second++;
System.out.println(first + " " + second);
}
}Menggunakan Semula Pemadan pada Masukan Baharu
reset(newInput) menggunakan semula objek pemadan yang sama dengan rentetan berbeza, sekali gus mengelakkan peruntukan baharu.
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("abc");
m.reset("xyz789");
System.out.println(m.find());
System.out.println(m.group());
}
}Ringkasan matches berbanding find
Pilih berdasarkan tujuan: gunakan matches untuk mengesahkan nilai penuh (seperti keseluruhan ID), dan find untuk mengekstrak atau mencari bahagian dalam teks yang lebih besar.
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern id = Pattern.compile("[A-Z]{2}\\d{4}");
System.out.println(id.matcher("AB1234").matches());
System.out.println(id.matcher("id=AB1234;").find());
}
}Mengira Padanan
Tugas lazim ialah mengira kejadian. Ulangi find dalam gelung dan naikkan pembilang.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("o").matcher("foo boo zoo");
int count = 0;
while (m.find()) count++;
System.out.println(count);
}
}Semakan Pantas
Kaedah manakah yang memerlukan keseluruhan rentetan masukan sepadan dengan corak?
Ulang Kaji
Anda telah mencari padanan:
matchesmenguji keseluruhan masukan;lookingAtmenguji permulaan;findmencari di mana-mana tempat.- Ulangi
finduntuk melangkah melalui semua padanan dan membacagroup,start,end. resetmengundurkan pemadan, manakalareset(input)menggunakan semula pemadan pada teks baharu.
Pelajari Java dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 104
- Pelajaran
- 374
Soalan Lazim
Adakah pelajaran “Mencari dan Memadankan” percuma?
Ya — teks penuh “Mencari dan Memadankan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Java Academy, tingkat taraf kepada CoddyKit PRO. Kursus Java Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Mencari dan Memadankan”?
matches, find, lookingAt Anda berlatih Java Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Java Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Java Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Mencari dan Memadankan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Menyusun Corak
- Mencari dan Memadankan
- Kumpulan Tangkapan
- Penggantian dengan Regex