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!