Heim >Backend-Entwicklung >C++ >Warum funktionieren Regex-Trennzeichen nicht in regulären C#-Ausdrücken?

Warum funktionieren Regex-Trennzeichen nicht in regulären C#-Ausdrücken?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-22 04:37:15824Durchsuche

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

Reguläre C#-Ausdrücke: Trennzeichenunterschiede

Im Gegensatz zu Sprachen wie PHP und JavaScript verwenden reguläre C#-Ausdrücke keine Trennzeichen. Dieser Unterschied in der Syntax erfordert einen geänderten Ansatz bei der Portierung von Regex-Code aus anderen Sprachen.

Anschauliches Beispiel

Sehen wir uns ein Regex-Beispiel an, mit dem nicht-alphanumerische Zeichen entfernt werden sollen:

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

Der obige Code funktioniert zwar in anderen Sprachen, die Trennzeichen (/) verwenden, führt jedoch in C# nicht zum erwarteten Ergebnis.

Korrekte C#-Implementierung

Der entsprechende C#-Code, der Trennzeichen entfernt und das gewünschte Ergebnis erzielt, ist:

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

In C# bedeutet das Symbol @ vor dem String-Literal ein wörtliches String-Literal, wodurch die Interpretation der Escape-Sequenz verhindert wird. Dies ist entscheidend für den korrekten Umgang mit Regex-Mustern.

Klärung der Trennzeichenfunktion

In Sprachen, die Trennzeichen verwenden, dienen sie dazu, den Anfang und das Ende des Regex-Musters zu markieren. Sie sind nicht Teil der Matching-Logik selbst. In C# wird diese Trennzeichensyntax weggelassen, wodurch die Ausdrucksstruktur vereinfacht wird.

C# verwendet RegexOptions, um Modifikatoren wie den Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung oder den Mehrzeilenmodus zu verwalten und bietet ähnliche Funktionen wie Inline-Modifikatoren, die in anderen Sprachen häufig mit Trennzeichen verknüpft sind. Das Kern-Regex-Muster bleibt jedoch unabhängig von Trennzeichenkonzepten.

Das obige ist der detaillierte Inhalt vonWarum funktionieren Regex-Trennzeichen nicht in regulären C#-Ausdrücken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn