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
DDDasal
2024-11-04 22:10:02600semak imbas

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>

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+)

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");
}

Contoh menggunakan rujukan balik pengelompokan bernama:

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

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:
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