Maison >développement back-end >C++ >Pourquoi les délimiteurs Regex ne fonctionnent-ils pas dans les expressions régulières C# ?

Pourquoi les délimiteurs Regex ne fonctionnent-ils pas dans les expressions régulières C# ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-22 04:37:15824parcourir

Why Don't Regex Delimiters Work in C# Regular Expressions?

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!

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