Ich benötige einen regulären Ausdruck, mit dem ich eine Zeichenfolge untersuchen und bestimmte Elemente zurückgeben kann, wenn ich eine RegEx.Split() in .NET ausführe. Ich habe versucht, dies auf eigene Faust zu tun, aber ich kann nie scheinen, um zu bekommen, was ich brauche, und die Ergebnisse machen nie einen Sinn. Offensichtlich habe ich keine guten Kenntnisse im Schreiben regulärer Ausdrücke.
Hier ist also der String...
"%date - %-5level - [%thread] - %logger - %message - %exception%newline"
Ich möchte im Wesentlichen ein Array zurückerhalten, das wie das folgende aussieht:
"date"
"-5level"
"thread"
"logger"
"message"
"exception"
"newline"
Der folgende Code ist nahe dran, aber nicht ganz.
Regex exp = new Regex(@"\W+");
string[] s = exp.Split(@"%date - %-5level - [%thread] - %logger - %message - %exception%newline");
Ich erhalte die folgende Meldung:
""
"date"
"5level"
"thread"
"logger"
"message"
"exception"
"newline"
Aus irgendeinem Grund habe ich eine leere Zeichenfolge als ersten Index, und im 3. Index fehlt das "-". Ich nehme an, weil es nicht Teil eines "Wortes" ist.
Abgesehen von dem "-" möchte ich dann "5level" in ein Array aufteilen:
"5"
"level"
Ich habe damit experimentiert:
Regex exp2 = new Regex(@"(\d+)([a-zA-Z]+)");
string[] s2 = exp2.Split("5level");
Aber es gibt 2 Indizes mit leeren Zeichenfolgen zusätzlich zu den geteilten Elementen zurück, die ich so haben möchte:
""
"5"
"level"
""
Ich weiß nicht, wie ich den Ausdruck so formatieren kann, dass er mir das gibt, was ich brauche. Für jede Hilfe wäre ich dankbar.