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 :
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!