Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Memadankan Teks Berbilang Baris Dengan Betul Menggunakan Ungkapan Biasa Java?

Bagaimanakah Saya Boleh Memadankan Teks Berbilang Baris Dengan Betul Menggunakan Ungkapan Biasa Java?

Barbara Streisand
Lepaskan: 2024-12-10 11:30:10
asal
200 orang telah melayarinya

How Can I Correctly Match Multiline Text Using Java Regular Expressions?

Padankan Teks Berbilang Baris Menggunakan Ungkapan Biasa

Apabila cuba memadankan teks berbilang baris dengan Java, anda mungkin menghadapi cabaran menggunakan Pattern.MULTILINE pengubah suai dan ungkapan (?m). Berikut ialah contoh yang menerangkan perbezaan dan menyediakan penyelesaian:

Kami mempunyai teks berbilang baris berikut:

User Comments: This is \t a\ta \n test \n\n message \n
Salin selepas log masuk

Corak dengan Corak.Pengubahsuai MULTILINE:

String pattern1 = "User Comments: (\W)*(\S)*";
Pattern p = Pattern.compile(pattern1, Pattern.MULTILINE);
System.out.println(p.matcher(test).find()); // true
Salin selepas log masuk

Corak ini berjaya memadankan teks kerana pengubah suai Pattern.MULTILINE membenarkan ^ dan $ sauh untuk dipadankan pada permulaan dan akhir setiap baris.

Corak dengan (?m) Ungkapan:

String pattern2 = "(?m)User Comments: (\W)*(\S)*";
System.out.println(test.matches(pattern2)); // false
Salin selepas log masuk

Corak ini gagal padan kerana ungkapan (?m) adalah tidak betul. Ia sepatutnya (?s) untuk mendayakan mod DOTALL, yang membenarkan titik (.) untuk memadankan aksara baris baharu.

Selain itu, kaedah padanan() digunakan untuk menyemak sama ada keseluruhan rentetan sepadan dengan corak. Dalam kes ini, corak hanya sepadan dengan sebahagian daripada rentetan, jadi matches() mengembalikan false.

Penyelesaian:

Untuk memadankan teks berbilang baris dengan betul menggunakan ungkapan biasa , anda boleh menggunakan corak berikut dengan pengubah suai Pattern.DOTALL:

Pattern regex = Pattern.compile("^\s*User Comments:\s+(.*)", Pattern.DOTALL);
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
    ResultString = regexMatcher.group(1);
}
Salin selepas log masuk

Corak ini akan menangkap teks selepas "Pengguna Komen:" dan simpannya dalam ResultString.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memadankan Teks Berbilang Baris Dengan Betul Menggunakan 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