Hallo,
ich möchte aus einem String einen bestimmten Teilstring per Regex ermitteln.
Mein Code sieht momentan so aus:
string line = " load test.txt ; Kommentar";
string pattern = @"(\s\*)(?[^;]\*[\w$])";
Regex reg = new Regex(pattern);
Match m = reg.Match(line);
string content = m.Groups["cont"].Value;
Ich übergebe einen String, der an beliebigen Stellen Whitespaces oder ein Kommentarzeichen ( haben kann.
Mein Ziel ist es, nur den relevanten Inhalt zu ermitteln, also „load test.txt“ ohne Kommentare und Whitespaces am Anfang und Ende.
Das Ganze funktioniert soweit ganz gut.
Falls aber eine fehlerhafte Eingabe vorkommt, z.B. „load test.txt±“, dann wird mein resultierender String trotzdem durch [\w$] auf „load test.txt“ gekürzt und ich bekomme den Fehler nicht mit. Soweit aber logisch.
[\w$] bedeutet für mich, dass das letzte Zeichen des Strings ein Wortzeichen ist. Da ich aber erreichen will, dass alle Zeichen beachtet werden die keine Whitespaces sind, habe ich [\S$] eingefügt und erhalte „load test.txt± ;“. An dieser Stelle hätte ich "load test.txt±"erwartet. Erweitere ich hingegen [\w$] auf [\w±$], bekomme ich „load test.txt±“. Ich möchte aber nicht jedes Sonderzeichen manuell ergänzen, sondern einen allgemeinen Ausdruck wie \S benutzten.
Hat jemand eine Idee, wo mein Denkfehler liegt.
Danke & Gruß
ziba