Maison  >  Article  >  Java  >  Comment puis-je utiliser des groupes nommés dans les expressions régulières Java ?

Comment puis-je utiliser des groupes nommés dans les expressions régulières Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-06 01:27:02130parcourir

How Can I Utilize Named Groups in Java Regular Expressions?

Groupes nommés Java Regex : une exploration approfondie

Malgré l'absence de prise en charge intégrée des groupes nommés dans le package java.regex de Java , les bibliothèques tierces offrent une solution à cette limitation.

Prise en charge de Java 7 pour Groupes nommés

Depuis Java 7, des groupes de capture nommés ont été introduits avec les constructions suivantes :

  • (?capturing text) : définit un groupe nommé "name."
  • k : renvoie un groupe nommé "name."
  • ${name} : fait référence au texte capturé dans la chaîne de remplacement d'un Matcher.
  • Matcher.group(String name) : récupère le texte capturé par un groupe nommé "name".

Alternatives pré-Java 7

Avant Java 7, plusieurs bibliothèques offre la prise en charge des groupes nommés :

  • Google nommée-regex : cette bibliothèque offre des fonctionnalités riches, notamment des groupes nommés imbriqués et des modèles d'expressions régulières récursives.
  • jregex  : Bien que limitée dans son support, cette bibliothèque propose toujours un groupe nommé de base fonctionnalité.

Exemples

Considérons l'exemple suivant utilisant un modèle d'expression régulière nommée :

String input = "TEST 123";
Pattern pattern = Pattern.compile("(?<login>[\w]+) (?<id>[\d]+)");
Matcher matcher = pattern.matcher(input);
System.out.println("Login: " + matcher.group("login"));
System.out.println("ID: " + matcher.group("id"));

Cela permettra sortie :

Login: TEST
ID: 123

Limitations

La prise en charge des groupes nommés par Java est limitée des manières suivantes :

  • Un seul nom nommé groupe par nom. Cette limitation empêche de capturer plusieurs occurrences du même nom. group.
  • Aucune prise en charge de la récursivité dans les regex. Les groupes nommés ne peuvent pas être utilisés comme cible de récursion dans le modèle regex.

Conclusion

Les bibliothèques tierces offrent une prise en charge robuste des groupes nommés pour Java. Cependant, avec l'introduction des groupes nommés dans Java 7, les développeurs disposent désormais d'une approche plus rationalisée et standardisée pour travailler avec des groupes nommés dans leurs modèles d'expressions régulières.

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!

Déclaration:
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