[RegEx] Enthält Teilstring nicht

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Jaw
Beiträge: 54
Registriert: 14.07.2004, 01:00
Wohnort: Raum Düsseldorf

[RegEx] Enthält Teilstring nicht

Beitrag 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
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: [RegEx] Enthält Teilstring nicht

Beitrag 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).)*$
Alexander Kornrumpf
Moderator
Beiträge: 2119
Registriert: 25.02.2009, 13:37

Re: [RegEx] Enthält Teilstring nicht

Beitrag 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.
Jaw
Beiträge: 54
Registriert: 14.07.2004, 01:00
Wohnort: Raum Düsseldorf

Re: [RegEx] Enthält Teilstring nicht

Beitrag 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
Antworten