Rumah > Java > javaTutorial > Bagaimana untuk Memadankan Teks Berbilang Baris dengan Betul dengan Ungkapan Biasa Java?

Bagaimana untuk Memadankan Teks Berbilang Baris dengan Betul dengan Ungkapan Biasa Java?

Mary-Kate Olsen
Lepaskan: 2024-12-09 18:01:15
asal
295 orang telah melayarinya

How to Correctly Match Multiline Text with Java Regular Expressions?

Memadankan Teks Berbilang Baris dengan Ungkapan Biasa

Memadankan teks berbilang baris selalunya memerlukan pengendalian pemisah baris dan berlabuh. Apabila menggunakan kelas Pattern Java, terdapat dua pengubah suai yang boleh membantu dengan ini: Pattern.MULTILINE dan String.matches(). Walau bagaimanapun, mungkin terdapat kekeliruan antara penggunaannya.

Corak.MULTILINE lwn. (?m)

Corak.MULTILINE dan (?m) kedua-duanya mempunyai tujuan yang sama : membenarkan ^ dan $ untuk dipadankan pada permulaan dan penghujung setiap baris, bukannya hanya pada permulaan dan akhir keseluruhan rentetan.

String.matches() vs. Pattern.matcher()

String.matches() menjangkakan ungkapan biasa sepadan dengan keseluruhan rentetan. Ini bermakna penggunaannya boleh dihadkan apabila berurusan dengan teks berbilang baris.

Menyelesaikan Contoh

Dalam contoh yang disediakan, (?m) digunakan dengan String.matches( ), di situlah letak masalahnya. Memandangkan ungkapan biasa hanya menangkap sebahagian daripada teks berbilang baris, String.matches() gagal memadankan keseluruhan rentetan dan mengembalikan palsu.

Penggunaan Betul untuk Padanan Berbilang Baris

Untuk memadankan teks berbilang baris dengan betul, anda harus menggunakan Pattern.compile() dengan pengubah suai Pattern.DOTALL, yang membenarkan titik (.) untuk memadankan aksara baris baharu. Berikut ialah versi kod yang dikemas kini:

String test = "User Comments: This is \t a\ta \n test \n\n message \n";
String pattern = "^\s*User Comments:\s*(.*)";
Pattern regex = Pattern.compile(pattern, Pattern.DOTALL);
Matcher regexMatcher = regex.matcher(test);
if (regexMatcher.find()) {
    String result = regexMatcher.group(1);
}
Salin selepas log masuk

Kod ini akan berjaya menangkap teks selepas "Komen Pengguna:" pada berbilang baris.

Atas ialah kandungan terperinci Bagaimana untuk Memadankan Teks Berbilang Baris dengan Betul dengan Ungkapan Biasa Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan