Maison > Java > javaDidacticiel > Comment faire correspondre les virgules en dehors des parenthèses en Java ?

Comment faire correspondre les virgules en dehors des parenthèses en Java ?

Patricia Arquette
Libérer: 2024-11-11 21:49:02
original
315 Les gens l'ont consulté

How to Match Commas Outside Parentheses in Java?

Virgules correspondantes à l'exclusion des occurrences entre parenthèses

Considérez la chaîne suivante :

12,44,foo,bar,(23,45,200),6
Copier après la connexion

La tâche à accomplir est de concevoir une expression régulière qui cible spécifiquement les virgules situées en dehors des parenthèses. En d'autres termes, dans l'exemple fourni, nous avons besoin d'une expression régulière qui correspond aux deux virgules après "23" et "45" mais exclut les autres.

Solution d'expression régulière Java

En supposant que les parenthèses imbriquées soient absentes, nous pouvons utiliser l'expression régulière Java suivante pour obtenir le résultat souhaité résultat :

Pattern regex = Pattern.compile(
    ",         # Match a comma\n" +
    "(?!       # only if it's not followed by...\n" +
    " [^(]*    #   any number of characters except opening parens\n" +
    " \)      #   followed by a closing parens\n" +
    ")         # End of lookahead", 
    Pattern.COMMENTS);
Copier après la connexion

Explication de l'expression régulière

Cette expression régulière utilise une assertion d'anticipation négative pour confirmer que toute parenthèse suivante (si rencontrée) n'est pas une parenthèse fermante. Si cette condition est remplie, la virgule est reconnue comme une correspondance.

L'assertion anticipée fonctionne comme suit :

  • (?! initie une assertion anticipée négative.
  • [^(]* indique que le moteur d'expression régulière doit rechercher n'importe quel nombre de caractères à l'exception des parenthèses ouvrantes.
  • \) spécifie que une parenthèse fermante doit immédiatement suivre les caractères précédents.
  • ) conclut l'assertion d'anticipation.

Cela garantit que l'expression régulière ne correspond qu'aux virgules qui ne sont pas immédiatement suivies d'une parenthèse fermante.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal