Ich versuche, ein Fragment eines Stacktrace zu analysieren, die wie folgt ziemlich genau aussieht:einen Teilstring mit einem regulären Ausdruck Passende
at Test.Test1() in C:\Projects\Project\Test.cs:line 37
eine regex wie dies wie beabsichtigt funktioniert:
at (.*?) in (.*?):line (\d*)
Das passt
- Test.Test1()
- C: \ Projects \ Project \ Test.cs
Diese Regex ist mit einem Englisch stacktrace fest einprogrammiert, so gibt es offensichtlich keine Spiele, wenn der Stacktrace in einer anderen Sprache ist, wie schwedisch:
vid Test.Test1() i C:\Projects\Project\Test.cs:rad 37
zu machen die Anpassung mehr sprachneutral ich habe versucht, diese regex aus:
(.*?) .*? (.*?) (\d*)
das passt
- Test.Test1()
- C: \ Projects \ Project \ Test.cs: line
Die Frage ist, wie würde ich den Dateipfad ohne den hinteren übereinstimmen: Linie?
Genau das, was ich gesucht habe, Prost! –
Wenn Sie wissen, dass der letzte Doppelpunkt in der gesamten Zeile den Pfad vom Zeilenwort (oder was auch immer) trennt, können Sie versuchen, eine gierige Form der Suche zu verwenden: so (. *): (\ S +) passt dazu. Dies wird dann relative Pfade ohne Doppelpunkt oder sogar alte Apple Mac Pfade mit Doppelpunkt als Pfadtrennzeichen behandeln – Xetius