Maison  >  Article  >  Java  >  Comment fonctionne la capture de groupes dans les expressions régulières Java ?

Comment fonctionne la capture de groupes dans les expressions régulières Java ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-28 22:25:30659parcourir

How do Capturing Groups Work in Java Regular Expressions?

Comprendre les groupes de capture d'expressions régulières Java

Dans cet extrait de code, nous utilisons la bibliothèque d'expressions régulières (regex) de Java pour extraire des parties d'une chaîne. L'expression régulière est définie comme "(.)(d )(.)", où :

  • (.*) : correspond à n'importe quel nombre de caractères avant le groupe suivant.
  • (d ) : correspond à n'importe quel nombre de chiffres après le groupe précédent.
  • (.*) : correspond à n'importe quel nombre de caractères après le groupe précédent.

Exécution de l'expression régulière

Lorsque l'expression régulière est exécutée sur la chaîne "Cette commande a été passée pour QT3000 ! OK ?", elle produit les résultats suivants :

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

Comprendre les quantificateurs gourmands

Le quantificateur par défaut utilisé dans l'expression régulière est gourmand, ce qui signifie qu'il correspond à autant de caractères que possible pour satisfaire le groupe suivant. Dans ce cas, ".*" correspond à la chaîne entière jusqu'à ce que le premier chiffre soit trouvé, ne laissant aucun caractère pour le troisième groupe.

Utilisation de quantificateurs réticents

Pour faire correspondre seulement les caractères nécessaires, on peut utiliser un quantificateur réticent, indiqué par un point d'interrogation. Remplacer "(.)" par "(.?)" correspond au moins de caractères possible, ce qui donne le résultat suivant :

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

Avantages de la capture de groupes

Les groupes de capture nous permettent d'extraire des parties spécifiques d'une chaîne correspondante pour une utilisation ultérieure. Dans cet exemple, nous pouvons accéder à la valeur correspondante de chaque groupe via la méthode "group()" de l'objet "Matcher", comme démontré dans l'extrait de code ci-dessous :

<code class="java">Pattern pattern = Pattern.compile("(.*?)(\d+)(.*)");
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
    System.out.println("group 1: " + matcher.group(1));
    System.out.println("group 2: " + matcher.group(2));
    System.out.println("group 3: " + matcher.group(3));
}</code>

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