Maison >Java >javaDidacticiel >Comment fonctionne la capture de groupes dans les expressions régulières Java ?
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ù :
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!