Rumah >Java >javaTutorial >Mengapa `String.matches()` Tidak Berfungsi Seperti Yang Dijangkakan dengan Ungkapan Biasa?
String.matches() Tidak Padan dengan Expected Regex
Apabila cuba memadankan corak tertentu menggunakan String.matches("[a-z ]"), adalah mengejutkan apabila mendapati ia tidak berfungsi seperti yang diharapkan, walaupun rentetan mengandungi huruf kecil huruf.
Penjelasan:
Kaedah String.matches() dalam Java direka untuk menentukan sama ada keseluruhan rentetan input sepadan dengan ungkapan biasa yang disediakan. Dalam kes ini, ungkapan "[a-z]" cuba memadankan satu huruf kecil. Walau bagaimanapun, kod itu menyemak setiap rentetan dalam tatasusunan perkataan, tiada satu pun daripadanya bermula dengan huruf kecil.
Penyelesaian:
Untuk memadankan corak dalam rentetan, satu harus menggunakan kelas Corak dan Padanan. Kelas Pattern menyusun ungkapan biasa ke dalam objek Matcher, yang kemudiannya boleh digunakan untuk menyemak padanan dalam rentetan input.
Berikut ialah versi diubah suai kod yang menggunakan Pattern dan Matcher untuk mencari padanan:
Pattern p = Pattern.compile("[a-z]+"); for(String s:words) { Matcher m = p.matcher(s); if (m.find()) { System.out.println(s); } }
Kod ini kini mencetak "dkoe" dengan betul.
Atas ialah kandungan terperinci Mengapa `String.matches()` Tidak Berfungsi Seperti Yang Dijangkakan dengan Ungkapan Biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!