Menggunakan Ungkapan Biasa untuk Padanan Teks Berbilang Baris
Apabila cuba memadankan teks berbilang baris dengan ungkapan biasa dalam Java, pertimbangan tertentu akan diambil kira. Pengubah suai Pattern.MULTILINE dan trengkas (?m) nampaknya boleh memberikan hasil yang tidak dijangka.
Untuk memahami tingkah laku, adalah penting untuk menjelaskan tujuan pengubah itu. Pattern.MULTILINE (?m) membolehkan penambat ^ (permulaan baris) dan $ (akhir baris) dipadankan pada permulaan dan penghujung setiap baris dan bukannya hanya pada sempadan rentetan. Sebaliknya, Pattern.DOTALL (?s) membenarkan aksara titik memadankan pemisah baris.
Dalam contoh anda, corak (?m) gagal apabila digunakan dengan String.matches kerana matches() memerlukan regex untuk memadankan keseluruhan rentetan. Oleh kerana regex (W)(S) anda hanya sepadan dengan sebahagian daripada rentetan, perbandingan menghasilkan palsu.
Untuk mencari rentetan yang bermula dengan "Ulasan Pengguna:", ungkapan biasa yang lebih sesuai dengan tugasan ialah:
^\s*User Comments:\s*(.*)
regex ini menggunakan Pattern.DOTALL untuk membenarkan titik memadankan pemisah baris dan ia menangkap teks berikutan "Komen Pengguna:" ke dalam kumpulan tangkapan pertama.
Dengan menggunakan pengubah suai DOTALL dan memanfaatkan kaedah pemadanan yang betul (cari() atau padanan()), anda boleh memadankan teks berbilang baris dengan berkesan menggunakan ungkapan biasa dalam Jawa.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memadankan Teks Berbilang Baris Dengan Berkesan Menggunakan Ungkapan Biasa dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!