Maison  >  Article  >  Java  >  Comment trouver des virgules en dehors des parenthèses à l’aide de Regex en Java ?

Comment trouver des virgules en dehors des parenthèses à l’aide de Regex en Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-12 09:21:02292parcourir

How to Find Commas Outside Parentheses Using Regex in Java?

Faire correspondre les virgules hors parenthèses avec Regex

Faire correspondre des modèles spécifiques dans le texte est une tâche courante en programmation, en particulier lorsque l'on travaille avec des fichiers texte ou des utilisateurs. entrées. Dans ce cas, l'objectif est de trouver toutes les virgules d'une chaîne qui ne sont pas placées entre parenthèses.

À l'aide d'expressions régulières Java, on peut créer un modèle d'expression régulière pour atteindre cet objectif. L'expression régulière fournie est :

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

Ce modèle se décompose comme suit :

  • ", correspond à une virgule.
  • (?! démarre une assertion d'anticipation négative .
  • [^(]* correspond à n'importe quel nombre de caractères, à l'exception des parenthèses ouvrantes.
  • \) correspond à une parenthèse fermante.
  • ) termine l'assertion d'anticipation négative.

L'affirmation d'anticipation négative garantit que la virgule actuelle n'est pas suivie d'une parenthèse fermante. Cela exclut effectivement les virgules entre parenthèses.

En Java, la classe Pattern peut être utilisée pour compiler et faire correspondre des modèles d'expression régulière. Le modèle compilé peut ensuite être utilisé pour identifier la correspondance. sous-chaînes dans la chaîne d'entrée.

Exemple d'utilisation :

String input = "12,44,foo,bar,(23,45,200),6";
Matcher matcher = regex.matcher(input);
while (matcher.find()) {
    System.out.println(matcher.group());
}

Ce code imprimera les virgules qui ne sont pas entre parenthèses, comme spécifié par l'expression régulière :

,
,
,

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