RegExp - Probleme mit Negierung
Frank
- programmiertechnik
0 Thiemo
Hi,
heute habe ich auch mal eine Frage :-)
Ich habe ein kleines Problemchen mit den Regular Expressions, welches sich wie folgt ergibt.
ich möchte eine riesige Liste mit Pfadangaben zu Dateien validieren.
Der Pfad muß dabei nach einer bestimmten Form aufgebaut sein:
C:\User\variablerOrdner1\seq\arc\variablerOrdner2\SchwanzVonVariablenOrdners(z.b: 41\01\1_2)
wichtig ist hierbei, daß der variableOrdner2 auch wirklich vorkommt. Und nicht nach arc\ gleich diese 41 kommt
dazu habe ich versucht eine Regular Expression zu bauen
/\B\seq|SEQ\arc|ARC\\D\d\w*\\w+\.*/
damit bekomme ich aber leider nur die Pfade, wo nach Arc\ mind ein Buchstabe und eine Zahl vorhanden sind. Leider scheiden dadurch einige Elemente, die ich trotzdem gern hätte aus (welche, die nur Buchstaben haben) Das gänge zwar an der Namenskonvention vorbei, kann aber doch vorkommen. Wie schön das Konventionen immer nur bei Bedarf eingehalten werden. ;-)
ein Problem kommt noch hinzu, C:\User kann auch C:\Projekte\aktuell\user sein, sonst könnte ich den ganzen Pfad in die regular expression nehmen.
Hat jemand eine Idee, wie ich diese RegExp umstellen kann?
Grüße, Frank
Die Frage ist, was du überhaupt überprüfen willst? Willst du verhindern, dass jemand zu wenig eintippt oder zu viel? Wenn das, was du als "Schwanz" bezeichnest, sowieso variabel ist, brauchst du es zum Beispiel gar nicht überprüfen - in diesem Teil ist dann sowieso alles erlaubt.
Vieleicht genügt das hier schon?
/\seq\arc\\w+\\w+/i
Dies findet zum Beispiel "\seq\arc\beispiel\87" oder auch "\SEQ\arc\256byte\dhtml". Beachte, dass es keine Zeilenanker gibt, davor und dahinter darf also beliebig viel anderer Kram stehen. Das /i sorgt übrigens dafür, dass Gross/Kleinschreibung egal ist.