Seite 1 von 1

[RegEx] Enthält Teilstring nicht

Verfasst: 12.05.2011, 15:18
von Jaw
Hallo zusammen

Ich brauche in einem Projekt eine kleine Filter Funktion, die ich z.B. für Dateinamen anwende. Es sollen z.B. nur bestimmte Dateien in ein anderes Verzeichnis kopiert werden, oder aber bestimmte ausgelassen werden.

Dafür wollte ich mit regulären Ausdrücken für die Dateinamen arbeiten. Und da habe ich ein Problem. Ein Filter für "alle Dateien die 'test' enthalten" geht ganz einfach. .*(test).* ist vielleicht nicht das schönste Pattern aber es geht.
Aber das Gegenteil, "Dateien die 'test' nicht enthalten" kriege ich nicht hin. Also irgendwie ein Regex Pattern was besagt, dass ein bestimmter Teilstring nicht enthalten ist.

Ich steh kurz davor das mit einer einfachen substring Prüfung zu machen oder irgendwie anders. Aber vielleicht kennt ja jemand einen Trick.

Grüße
-JAW

Re: [RegEx] Enthält Teilstring nicht

Verfasst: 12.05.2011, 17:18
von Aramis
Mhm, haengt davon ab, was fuer eine Regex-Engine du nutzt.

Generell muesste ein negativer Lookahead aber klappen:

Code: Alles auswählen

^((?!test).)*$

Re: [RegEx] Enthält Teilstring nicht

Verfasst: 13.05.2011, 08:33
von Alexander Kornrumpf
Ich wusste doch dass ich das schonmal gesehen habe:

http://zfx.info/viewtopic.php?f=4&t=103 ... gex#p12056

Ich schreib dazu nachher mal ein genaueres Tutorial, ist ja nicht mehr feierlich so.

Re: [RegEx] Enthält Teilstring nicht

Verfasst: 20.05.2011, 15:36
von Jaw
Hallö

Also ich habs mit lookahead und lookbehind versucht, das klappt aber nicht in so pauschalen Fällen. Da vor und hinter dem lookahead jeweils ein .* steht, oder [a-z]*, findet er sich immer ein Pattern das klappt.

Ich habs jetzt wirklich einfach umgedreht, indem ich prüfe, dass der Begriff vorkommt, und das Ergebnis dann invertiere. Das geht ja wiederum sehr einfach.

Ich les jetzt trotzdem mal den Link, thx :)

-JAW