2 Stimmen

Verwendung der Regex-Konstante zur Rückgabe einer Zeichenkette zwischen zwei Tags

Ich versuche, in C# zu verwenden

 var added = Regex.Match(Text,
 "\[BEGINTAG\](.+?)\[\/ENDTAG\]",RegexOptions.None);

um die Zeichenfolge zwischen den Tags [BEGINTAG] und [/ENDTAG] in einer Textzeichenfolge zurückzugeben. Ich kann nicht herausfinden, was mit meiner Regex-Konstante falsch ist.

2voto

buckley Punkte 12756

Ihre Regex ist gut. Sie müssen nur die Gruppe 1 extrahieren (das, was Sie zwischen den Klammern finden)

In C# wird daraus

Regex regexObj = new Regex(@"\[BEGINTAG\](.+?)\[/ENDTAG\]");
resultString = regexObj.Match(subjectString).Groups[1].Value;

Lassen Sie mich wissen, ob das funktioniert

Zu Ihrer Information: Sie müssen nicht so oft fliehen, wie Sie es tun. Das ist auch gut so:

\[BEGINTAG](.+?)\[/ENDTAG]

1voto

John M Gant Punkte 18412

Ein mögliches Problem besteht darin, dass Sie nicht über eine @ vor der Zeichenkette, also behandelt C# die \ Zeichen als C#-Escapes und nicht als Regex-Escapes.

Buckleys Antwort zeigt, wie man die Zeichenkette mit dem Präfix @ so dass die \ werden als Regex-Escapes behandelt. Es ist fast immer besser, dieses Format für Regex in C# zu verwenden. Andernfalls enden Sie mit etwas wie diesem.

var added = Regex.Match(Text, 
    "\\[BEGINTAG\\](.+?)\\]\\/ENDTAG\\]", RegexOptions.None);

Das finde ich schwer zu lesen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X