Maison >développement back-end >C++ >Comment C# Regex peut-il diviser des chaînes avec des virgules entre guillemets ?

Comment C# Regex peut-il diviser des chaînes avec des virgules entre guillemets ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-07 21:10:45185parcourir

How Can C# Regex Split Strings with Commas Inside Quotes?

Fractionnement de chaînes d'expressions régulières C# : virgules hors guillemets

La gestion des chaînes contenant des virgules intégrées peut s'avérer difficile en utilisant les méthodes traditionnelles de fractionnement basées sur des virgules. Cet article présente une solution utilisant C# et des expressions régulières pour diviser une chaîne contenant des virgules pouvant être entourées de guillemets.

Énoncé du problème :

Considérez la chaîne suivante représentant un extrait de code SQL :

<code>('ABCDEFG', 123542, 'XYZ 99,9')</code>

Le but est de diviser cette chaîne en trois parties différentes :

  1. 'ABCDEFG'
  2. 123542
  3. 'XYZ 99,9'

Le défi se pose car la virgule dans le troisième paramètre ("XYZ 99,9") ne doit pas être considérée comme un séparateur.

Solution d'expression régulière :

Pour résoudre ce problème, nous pouvons utiliser une expression régulière qui ne correspond à une virgule que si elle est précédée d'un nombre pair de guillemets simples. Ce mode garantit que les virgules entre guillemets ne sont pas divisées.

<code>",(?=(?:[^']*'[^']*')*[^']*$)"</code>

Utilisation :

<code class="language-csharp">var result = Regex.Split(sampleString, ",(?=(?:[^']*'[^']*')*[^']*$)");</code>

Explication :

  • "," correspond à n'importe quelle virgule de la chaîne.
  • (?=( démarre une assertion anticipée.
  • (?:[^']'[^']')* correspond à n'importe quel nombre de séquences de guillemets non simples, suivis d'un guillemet simple.
  • [^']* correspond à n'importe quel nombre de guillemets non simples.
  • $ correspond à la fin de la chaîne.

Sortie :

La sortie du tableau de résultats est la suivante :

<code>{"'ABCDEFG'", "123542", "'XYZ 99,9'"}</code>

Cela montre comment diviser avec succès une chaîne en fonction de virgules en dehors des guillemets tout en gardant intacts les arguments cités.

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