Maison >développement back-end >C++ >Pourquoi les délimiteurs Regex ne fonctionnent-ils pas dans les expressions régulières C# ?
Expressions régulières C# : différences entre les délimiteurs
Contrairement aux langages tels que PHP et JavaScript, les expressions régulières C# n'utilisent pas de délimiteurs. Cette différence de syntaxe nécessite une approche modifiée lors du portage du code regex à partir d'autres langages.
Exemple illustratif
Examinons un exemple d'expression régulière destiné à supprimer les caractères non alphanumériques :
<code class="language-csharp">string name = "dr-det-fb.ydp.eu/ebook/trunk/annotations/ctrl.php/api1751-4060-1193-0487"; string result = Regex.Replace(name, @"/\W/g", ""); //Incorrect C# syntax</code>
Le code ci-dessus, bien que fonctionnel dans d'autres langages utilisant des délimiteurs (/
), ne produira pas le résultat attendu en C#.
Implémentation correcte de C#
Le code C# équivalent, éliminant les délimiteurs et obtenant le résultat souhaité, est :
<code class="language-csharp">string name = "dr-det-fb.ydp.eu/ebook/trunk/annotations/ctrl.php/api1751-4060-1193-0487"; string result = Regex.Replace(name, @"\W", ""); //Correct C# syntax</code>
En C#, le symbole @
avant le littéral de chaîne signifie un littéral de chaîne textuelle, empêchant l'interprétation de la séquence d'échappement. Ceci est crucial pour gérer correctement les modèles d’expressions régulières.
Fonction de délimiteur de clarification
Dans les langages employant des délimiteurs, ils servent à marquer le début et la fin du modèle regex. Ils ne font pas partie de la logique d’appariement elle-même. C# omet cette syntaxe de délimiteur, simplifiant ainsi la structure de l'expression.
C# utilise RegexOptions
pour gérer les modificateurs tels que la correspondance insensible à la casse ou le mode multiligne, offrant des fonctionnalités similaires aux modificateurs en ligne souvent associés aux délimiteurs dans d'autres langages. Cependant, le modèle d'expression régulière de base reste indépendant de tout concept de délimiteur.
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!