Rumah  >  Artikel  >  Java  >  Bagaimanakah Menangkap Kumpulan Berfungsi dalam Ungkapan Biasa Java?

Bagaimanakah Menangkap Kumpulan Berfungsi dalam Ungkapan Biasa Java?

Susan Sarandon
Susan Sarandonasal
2024-10-28 22:25:30568semak imbas

How do Capturing Groups Work in Java Regular Expressions?

Memahami Java Regex Capturing Groups

Dalam coretan kod ini, kami menggunakan pustaka ekspresi biasa (regex) Java untuk mengekstrak bahagian rentetan. Regex ditakrifkan sebagai "(.)(d )(.)", di mana:

  • (.*): Memadankan sebarang nombor mana-mana aksara sebelum kumpulan seterusnya.
  • (d ): Memadankan sebarang nombor digit selepas kumpulan sebelumnya.
  • (.*): Memadankan sebarang nombor mana-mana aksara selepas kumpulan sebelumnya.

Pelaksanaan Regex

Apabila regex dilaksanakan terhadap rentetan "Pesanan ini dibuat untuk QT3000! OK?", ia menghasilkan keputusan berikut:

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

Memahami Pengkuantiti Tamak

Pengkuantiti lalai yang digunakan dalam regex ialah tamak, bermakna ia memadankan seberapa banyak aksara yang mungkin untuk memenuhi kumpulan seterusnya. Dalam kes ini, ".*" sepadan dengan keseluruhan rentetan sehingga digit pertama ditemui, tidak meninggalkan aksara untuk kumpulan ketiga.

Menggunakan Pengkuantiti Enggan

Untuk memadankan hanya aksara yang diperlukan, kita boleh menggunakan pengkuantiti enggan, ditunjukkan dengan tanda soal. Menggantikan "(.)" dengan "(.?)" sepadan dengan bilangan aksara paling sedikit yang mungkin, menghasilkan output berikut:

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

Kelebihan Menangkap Kumpulan

Kumpulan tangkapan membolehkan kami mengekstrak bahagian tertentu rentetan padanan untuk kegunaan selanjutnya. Dalam contoh ini, kita boleh mengakses nilai dipadankan setiap kumpulan melalui kaedah "kumpulan()" bagi objek "Matcher", seperti yang ditunjukkan dalam coretan kod di bawah:

<code class="java">Pattern pattern = Pattern.compile("(.*?)(\d+)(.*)");
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
    System.out.println("group 1: " + matcher.group(1));
    System.out.println("group 2: " + matcher.group(2));
    System.out.println("group 3: " + matcher.group(3));
}</code>

Atas ialah kandungan terperinci Bagaimanakah Menangkap Kumpulan Berfungsi dalam Ungkapan Biasa Java?. 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