Maison  >  Article  >  Java  >  Comment faire correspondre les virgules en dehors des parenthèses en Java à l'aide de Regex ?

Comment faire correspondre les virgules en dehors des parenthèses en Java à l'aide de Regex ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-08 21:15:02430parcourir

How to Match Commas Outside Parentheses in Java Using Regex?

Faire correspondre des virgules en dehors des parenthèses dans des chaînes

Considérons une chaîne ressemblant à la suivante :

12,44,foo,bar,(23,45,200),6

Le but est de construisez une expression régulière en Java pour sélectionner uniquement les virgules qui ne sont pas entre parenthèses. Dans cet exemple, les correspondances souhaitées seraient les virgules suivant "12" et "44".

Solution

L'expression régulière Java suivante accomplit la tâche :

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

Cette expression régulière utilise une expression négative assertion d'anticipation, représentée par "(?!...)", pour garantir que la parenthèse suivante (le cas échéant) n'est pas une parenthèse fermante. Cette contrainte permet à la virgule de correspondre uniquement lorsqu'elle n'est pas située dans une expression entre parenthèses.

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