Maison > Java > javaDidacticiel > le corps du texte

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

DDD
Libérer: 2024-11-04 22:10:02
original
550 Les gens l'ont consulté

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

Regroupement nommé en Java

Le package java.regex en Java ne prend pas en charge le regroupement nommé. Java 7 et supérieur

Java 7 et supérieur prend désormais en charge le regroupement nommé. Les groupes nommés peuvent être définis en utilisant :

Les groupes nommés peuvent être référencés en utilisant :

<code class="java">(?<name>capturing text)</code>
Copier après la connexion

k : rétro-référencer un groupe nommé

    Matcher .group(String name) : renvoie la sous-séquence d'entrée capturée en fonction du groupe nommé donné
  • ${name} dans Matcher.replaceAll() : fait référence au matcher pour remplacer le groupe capturé dans la chaîne
  • Alternatives (pour les versions antérieures à Java 7)

Pour les versions antérieures à Java 7, les alternatives suivantes sont disponibles :

Google nommé-regex
     : une bibliothèque légère qui prend en charge le regroupement nommé.
  • jregex
  •  : une bibliothèque d'expressions régulières riche en fonctionnalités, incluant la prise en charge des groupements nommés.
  • Implémentation personnalisée

Vous pouvez également prendre en charge le regroupement nommé en écrivant votre propre version de Regex. Par exemple, la bibliothèque Regex2 fournit cette prise en charge.

Exemple

Exemple d'expression régulière utilisant un regroupement nommé :

Exemple de code Java utilisant un regroupement nommé :

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

Exemple d'utilisation d'un groupement nommé pour remplacer du texte :

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");
}
Copier après la connexion

Exemple d'utilisation d'une référence arrière de groupement nommé :

<code class="java">String result = matcher.replaceAll("aaaaa__sssss_____");</code>
Copier après la connexion

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