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 :
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 :
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!