Maison >Java >javaDidacticiel >Comment puis-je utiliser des groupes de capture nommés en Java avant Java 7 ?

Comment puis-je utiliser des groupes de capture nommés en Java avant Java 7 ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-05 06:01:01554parcourir

How can I use named capture groups in Java before Java 7?

Groupes nommés avec des expressions régulières en Java

Les packages d'expressions régulières ont des limites

paquet java.regex J'ai confirmé que il n'y a pas de support pour les groupes nommés, alors faites-moi savoir quelles bibliothèques tierces le prennent en charge.

J'ai étudié jregex, mais la dernière version datait de 2002 et cela n'a pas fonctionné pour java5 (même si je l'ai essayé tout de suite).

Support depuis Java 7

Java 7 a ajouté la prise en charge des groupes nommés. Les éléments de base pour prendre en charge les groupes de capture nommés sont :

  • '(?capturing text)' pour définir le groupe nommé 'name'
  • ' pour référencer en arrière le groupe nommé 'name' k'
  • '${name}' pour faire référence au groupe capturé dans la chaîne de remplacement de Matcher
  • entrée capturée par le 'groupe nommé' spécifié "Matcher.group(String name)" pour renvoyer une sous-chaîne

Alternatives avant Java 7 Il existait une alternative.

Google nommée-regex

    jregex
  • Bibliothèque Regex2

La bibliothèque Regex2 prend en charge les groupes nommés Elle s'étend la classe java.util.regex.Pattern pour créer .

Exemple

Chaîne d'entrée : "TEST 123"

Expression régulière : "(?w ) (?

Accès :

matcher.group(1) == "TEST"

matcher.group("login") == "TEST"

matcher. nom (1) == "login"


Remplacer :

matcher.replaceAll("aaaaa_$1_sssss_$2____") == "aaaaa_TEST_sssss_123____"

matcher.replaceAll("aaaa_$ { login}_sssss_${id}____") == "aaaaa_TEST_sssss_123____"

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