Rumah > Java > javaTutorial > Bagaimanakah saya boleh menggunakan kumpulan penangkapan bernama dalam ungkapan biasa Java?

Bagaimanakah saya boleh menggunakan kumpulan penangkapan bernama dalam ungkapan biasa Java?

DDD
Lepaskan: 2024-11-04 22:10:02
asal
666 orang telah melayarinya

How can I use named capturing groups in Java regular expressions?

Pengumpulan bernama dalam Java

Pakej java.regex di Java tidak menyokong pengelompokan bernama. Java 7 dan lebih tinggi

Java 7 dan lebih tinggi kini menyokong pengumpulan bernama. Kumpulan bernama boleh ditakrifkan menggunakan:

Kumpulan bernama boleh dirujuk menggunakan:

<code class="java">(?<name>capturing text)</code>
Salin selepas log masuk

k: merujuk balik kumpulan bernama

    Matcher .group(Nama rentetan): Mengembalikan urutan input yang ditangkap mengikut kumpulan bernama yang diberikan
  • ${name} dalam Matcher.replaceAll(): Merujuk pemadan untuk menggantikan kumpulan yang ditangkap dalam rentetan
  • Alternatif (untuk versi sebelum Java 7)

Untuk versi sebelum Java 7, alternatif berikut tersedia:

Google named-regex
    : Pustaka ringan yang menyediakan sokongan untuk kumpulan bernama.
  • jregex
  • : Pustaka ekspresi biasa yang kaya dengan ciri, termasuk sokongan untuk kumpulan bernama.
  • Pelaksanaan tersuai

Anda juga boleh menyokong pengumpulan bernama dengan menulis versi Regex anda sendiri. Sebagai contoh, perpustakaan Regex2 menyediakan sokongan ini.

Contoh

Contoh ungkapan biasa menggunakan kumpulan bernama:

Contoh kod Java menggunakan kumpulan bernama:

(?<login>\w+) (?<id>\d+)
Salin selepas log masuk

Contoh menggunakan pengelompokan bernama untuk menggantikan teks:

Pattern pattern = Pattern.compile("(?&lt;login&gt;\w+) (?&lt;id&gt;\d+)");
Matcher matcher = pattern.matcher("TEST 123");

if (matcher.find()) {
  String login = matcher.group("login");
  String id = matcher.group("id");
}
Salin selepas log masuk

Contoh menggunakan rujukan balik pengelompokan bernama:

<code class="java">String result = matcher.replaceAll("aaaaa__sssss_____");</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan kumpulan penangkapan bernama dalam ungkapan biasa Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan