Faire correspondre des virgules en dehors des parenthèses à l'aide d'expressions régulières
Problème :
Considérons une chaîne contenant plusieurs virgules, telles que "12,44,foo,bar,(23,45,200),6". Le but est de créer une expression régulière en Java qui correspond à toutes les virgules sauf celles entre parenthèses, c'est-à-dire uniquement les virgules après 23 et 45 dans l'exemple donné.
Solution :
Pour y parvenir, nous devons utiliser une expression régulière qui intègre une assertion prospective négative. Voici une expression régulière Java qui satisfait à cette exigence :
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 :
-
Comma Match : La première partie du regex, "virgules", correspond simplement à une virgule.
-
Assertion d'anticipation négative : l'assertion d'anticipation négative, incluse dans la section "(?!)", vérifie si le modèle suivant ne correspond pas à la virgule.
-
Vérification des parenthèses imbriquées : Ce modèle se compose de "1 )". La partie "1" correspond à n'importe quel nombre de caractères à l'exception d'une parenthèse ouvrante "(". La partie ")" correspond à une parenthèse fermante ")".
-
Logique globale : L'anticipation négative garantit que la virgule ne correspond que si elle n'est suivie d'aucun caractère à l'exception des parenthèses ouvrantes, qui sont ensuite suivies d'une parenthèse fermante. Cela exclut effectivement les virgules 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