Rumah >Java >javaTutorial >Mengapa `String.matches()` Tidak Berfungsi Seperti Yang Dijangkakan dengan Ungkapan Biasa?

Mengapa `String.matches()` Tidak Berfungsi Seperti Yang Dijangkakan dengan Ungkapan Biasa?

Linda Hamilton
Linda Hamiltonasal
2024-11-26 05:18:10462semak imbas

Why Doesn't `String.matches()` Work as Expected with Regular Expressions?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn