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
[RegEx] Enthält Teilstring nicht
- Aramis
- Moderator
- Beiträge: 1458
- Registriert: 25.02.2009, 19:50
- Echter Name: Alexander Gessler
- Wohnort: 2016
- Kontaktdaten:
Re: [RegEx] Enthält Teilstring nicht
Mhm, haengt davon ab, was fuer eine Regex-Engine du nutzt.
Generell muesste ein negativer Lookahead aber klappen:
Generell muesste ein negativer Lookahead aber klappen:
Code: Alles auswählen
^((?!test).)*$
-
- Moderator
- Beiträge: 2151
- Registriert: 25.02.2009, 13:37
Re: [RegEx] Enthält Teilstring nicht
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.
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
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
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