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
Patricia Arquetteoriginal
2024-11-11 21:49:02314parcourir

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

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);

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!

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