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
Libérer: 2025-01-07 21:10:45
original
134 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

Utilisation :

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

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal