| 

.NET C# Java Javascript Exception

3
Ob ich das irgend wann mal kapiere. :-/
Habe folgenden Text.
[...]
D:\Test\Ordner 1\Dokus\Doku Ordner 1
D:\Test\Ordner 1\Dokus\Doku Ordner 3\Neuer Ordner
D:\Test\Ordner 3\Dokus\Doku Ordner 3
D:\Test\Ordner 3\Dokus
D:\Test\Ordner 3\Dokus\Doku Ordner 1
D:\Test\Ordner 2\Dokus\Doku Ordner 3
D:\Test\Ordner 1\Dokus
D:\Test\Ordner 3\Dokus\Doku Ordner 2
D:\Test\Ordner 2\Dokus
D:\Test\Ordner 2\Dokus\Doku Ordner 2
D:\Test\Ordner 1\Dokus\Doku Ordner 2
D:\Test\Ordner 1\Dokus\Doku Ordner 3
D:\Test\Ordner 2\Dokus\Doku Ordner 1
D:\Test\Ordner 1\Dokus\Doku Ordner 3 - Kopie
[...]

Ich muss nun ein RegEx (unter .NET) haben der mir 3 Treffer liefert. Das wären:
D:\Test\Ordner 1\Dokus
D:\Test\Ordner 2\Dokus
D:\Test\Ordner 3\Dokus

D:\Test\[\w\W]*\Dokus -> Zuviele Treffer. :-(

Edit Floyd: Tags (Schlagwörter) erweitert um (csharp .net vb.net) - Laut Fragestellung wurde der Antwortquellcode als .Net gewünscht.
22.10.2009
GENiALi 2,5k 1 2 8
Floyd 14,6k 3 9
1
22.20.2009 - 19:24
Bewertung folgt sobald ich das im Büro testen kann. :-)
GENiALi 22.10.2009
1
Wer den Fehler findet darf ihn behalten. ;-)
GENiALi 22.10.2009
4 Antworten
6
Regex RegexObj = new Regex(@"D:\\Test(\\.*)\\Dokus(\r|\n)");
SplitArray = RegexObj.Split(SubjectString);


Alternative:

Regex RegexObj = new Regex(@"D:\\Test(\\.*)\\Dokus$", RegexOptions.Multiline);
SplitArray = RegexObj.Split(SubjectString);
22.10.2009
Floyd 14,6k 3 9
Floyd 14,6k 3 9
2
Immer gern verweise ich bei sowas auf das hier:
Regex-Lab

Das ist schneller als jedes Posting in jedem Forum :)
22.10.2009
DaSpors 4,2k 2 8
1
Werd ich mir ansehen. Schon runtergeladen.
GENiALi 22.10.2009
1
Da ich gerade etwas unter Zeitdruck stehe, habe ich nicht direkt eine Code-Lösung, aber ein gutes Tutorial, dann lernt man auch was ^^

RegEx Tutorial
22.10.2009
Dustin Klein 2,9k 2 9
2
Vor ein ode zwei Jahren habe ich das Buch Reguläre Ausdrücke von O'Reilly gelesen. Aber wenn man nie damit arbeiten muss geht das wissen so schnell verloren. :-(
GENiALi 22.10.2009
1
Oh, wie wahr, wie wahr :) Geht mir schonmal ähnlich ;)
Dustin Klein 23.10.2009
1
Lese gerade das Tutorial. Absolut genial. Mit dem wären wohl die RegEx Fragen von mir nicht hier drin. :-) Das sollte ich ja nicht sagen. Ab jetzt darf ich keine Fragen zu RegEx mehr stellen. :-/
GENiALi 23.10.2009
1
Dagegen! Wir wollen ja auch noch was dazu lernen :D Außerdem wird uns sonst langweilig!
Floyd 23.10.2009
1
Gutes Argument. Da habe ich noch viel Potential mit Fragen. :-)
GENiALi 23.10.2009
0
Versuchs mal damit:

^D:\Test\Ordner \d+\Dokus$


Bei deinem Regex findet
[\w\W]*
viel zu viel: \w sind alle Wort-Zeichen, \W sind nicht etwa alle Grossbuchstaben sondern alle nicht-Wort-Zeichen. Damit hast Du effektiv ein
.*
erzeugt.

Zudem fehlt bei deinem Regex der Abschluss
$
22.10.2009
Stefan 284 1 3
1
[\w\W]* ist sogar erwünscht da im Ordnernamen ein Leerzeichen enthalten sein kein und ein \w hier nicht ausgereicht hätte. Ergo musste ein .* oder etwas ähnliches her.
Floyd 23.10.2009
1
Zudem sind in Ordnernamen noch diverse Sonderzeichen erlaubt.
Floyd 23.10.2009

Stelle deine .net-Frage jetzt!