Regex für eckige Klammern
-
Hallo zusammen,
ich muss Texte nach einer bestimmten Art splitten, um diese weiterverarbeiten zu können. Ein Beispieltext könnte sein
[quote][B]Beispiel: [/B]Aktuelle Einstellung:[COLOR=Red][B]I[/B][/COLOR] Ende der Nachricht
Dabei sollen die eckigen Klammern das Format des Textes angeben. Ich möchte nun mit Regex.Split() folgendes Ergebnis erzeugen:
[B] Beispiel: [/B] Aktuelle Einstellung: [COLOR=Red] [B] I [/B] [/COLOR] Ende der Nachricht
Also das die eckigen Klammern in der Ergebnismenge noch mit angegeben werden. Ich hab nun versucht mittels folgendem Pattern dies zu realisieren
Regex r = new Regex("[\[\\]]");
aber leider werden dabei alle eckigen Klammern nicht mit angegeben.
Habt ihr eine Lösung dafür?
Danke!
-
Simple Implementierung ohne Regex:
string input = "[b]Beispiel: [/b]Aktuelle Einstellung:[color=Red][b]I[/b][/color] Ende der Nachricht"; input = input.Replace("]", "]\n"); input = input.Replace("[", "\n["); string[] splitted = input.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
Reicht das?
Regex Lösung:
string input2 = "[b]Beispiel: [/b]Aktuelle Einstellung:[color=Red][b]I[/b][/color] Ende der Nachricht"; string[] splitted2 = Regex.Split(input2, @"([.*?])"); splitted2 = splitted2.Where(x => x != "").ToArray();
Da bin ich mir aber weniger sicher.
EDIT:
Sorry das C# Syntax highlighting geht nicht.
-
Suchst du sowas wie
@"(\[[^\]]*])"
?