Maison > Java > javaDidacticiel > le corps du texte

Comment utiliser des groupes de capture nommés dans les expressions régulières Java ?

DDD
Libérer: 2024-11-05 16:43:02
original
758 Les gens l'ont consulté

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

Groupes nommés réguliers en Java

Introduction au contexte

Le package java.regex de Java ne prend pas en charge les groupes nommés, cet article présentera donc des groupes tiers bibliothèques pour résoudre ce problème.

Bibliothèques tierces prenant en charge les groupes nommés

Java 7

À partir de Java 7, Java prend en charge nativement les groupes nommés. Vous pouvez utiliser la structure suivante :

  • (?capturing text) : définit un groupe nommé nommé "name"
  • k : fait référence à un groupe nommé Groupe nommé de " name "
  • ${name} : référence le groupe capturé dans la chaîne de remplacement de Matcher
  • Matcher.group(String name) : renvoyé par le "groupe nommé" donné Capturé sous-séquence d’entrée.
    Veuillez vous référer au blog Oracle pour plus de détails.

Alternatives pré-Java 7

Pour les versions antérieures à Java 7, les bibliothèques tierces suivantes fournissent une prise en charge des groupes nommés :

  • Google nommée-regex : Bénéficie d'un support complet, mais il peut y avoir quelques bugs à résoudre.
  • jregex : Prise en charge limitée, uniquement pour les identifiants ASCII.

Exemple de groupe nommé

Ce qui suit est un exemple d'utilisation de groupes nommés :

Chaîne :

"TEST 123"
Copier après la connexion

Expression régulière :

"(?<login>\w+) (?<id>\d+)"
Copier après la connexion

Accès :

matcher.group(1) == "TEST"
matcher.group("login") == "TEST"
matcher.name(1) == "login"
Copier après la connexion

Remplacement :

matcher.replaceAll("aaaaa__sssss_____") == "aaaaa_TEST_sssss_123____"
matcher.replaceAll("aaaaa_${login}_sssss_${id}____") == "aaaaa_TEST_sssss_123____"
Copier après la connexion

Limitations et notes

  • Java 7 a toujours une prise en charge limitée pour les groupes nommés (voir la réponse de tchrist pour plus de détails).
  • Les groupes nommés de certaines bibliothèques peuvent ne pas fonctionner avec la récursivité des expressions régulières.
  • Lors de la spécification de groupes nommés pour les expressions régulières, les conventions de dénomination doivent être strictement respectées (par exemple, les identifiants ASCII uniquement).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal