Maison >développement back-end >C++ >Pourquoi le délimiteur Regex en ligne ne fonctionne-t-il pas en C# Regex.Replace() ?
Regex C# : éviter les délimiteurs en ligne
Problème :
Un piège courant lors de l'utilisation d'expressions régulières en C# est l'application incorrecte des délimiteurs en ligne. Cela conduit souvent à un comportement inattendu lors des tentatives de remplacement de chaînes. Par exemple, une expression régulière conçue pour supprimer "/", "-" et "." à partir d'une chaîne peut échouer.
Exemple :
Le code suivant tente de remplacer "/", "-" et "." avec une chaîne vide, mais cela ne fonctionnera pas correctement :
<code class="language-csharp">string name = "dr-det-fb.ydp.eu/ebook/trunk/annotations/ctrl.php/api1751-4060-1193-0487"; name = Regex.Replace(name, @"/\W/g", ""); // Incorrect usage of delimiters</code>
Solution :
C# diffère des langages comme PHP, Perl ou JavaScript dans sa syntaxe regex. Les délimiteurs en ligne (comme /
dans l'exemple ci-dessus) ne sont pas pris en charge. La bonne approche est de les omettre :
<code class="language-csharp">string name = "dr-det-fb.ydp.eu/ebook/trunk/annotations/ctrl.php/api1751-4060-1193-0487"; name = Regex.Replace(name, @"\W", ""); // Correct syntax</code>
Pour cibler spécifiquement "/", "-" et ".", utilisez une classe de caractères :
<code class="language-csharp">name = Regex.Replace(name, @"[/\-\.]", ""); // Correctly targets specific characters</code>
Explication :
Le symbole @
avant la chaîne regex indique un littéral de chaîne textuelle, empêchant C# d'interpréter spécialement les barres obliques inverses. W
correspond à n'importe quel caractère non alphanumérique, supprimant efficacement "/", "-", "." et autres symboles similaires. L'exemple amélioré utilise une classe de caractères [/-.]
pour définir explicitement les caractères à supprimer. L'indicateur g
(remplacement global) est implicitement géré par Regex.Replace
en C#. Par conséquent, aucun délimiteur ou indicateur global n’est nécessaire dans la méthode C# Regex.Replace
.
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!