PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RegExp in Perl



bigred2010
29.07.08, 08:03
Hi @ll

ich möchte mittels RegExp in Perl Prüfen ob eine variable $var ein bestimmtes Format hat oder nicht. Das Format soll wie folgt aufgebaut sein:
zahl#/verzeichnis/verzeichnis/verzeichnisDer Verzeichnispfad ist nicht immer Fest und hier hab ich das Problem, ich hab versucht das wie folgt zu lösen aber ich bekomme das nicht hin, weiß jemand was ich falsch gemacht habe:
$var="98#/verzeichnis/verzeichnis/verzeichnis";

if($var =~ /^(\d+)\#(\/[a-z-]*)$/ ){
print "OK\n";
}
else{
print "FEHLER\n";
}

Newbie314
29.07.08, 08:16
Perl Regex: sind (bei mir) immer eine Ausprobiererei.

Zuerst würde ich die Zahl auch mit [0-9]* darstellen, dann weiß ich nicht was das Minus hinter dem z soll, auf alle Fälle solltest du für Verzeichnisse zusätzlich noch [A-Z] und [0-9] zulassen...

Da ich lange nicht mehr mit Perl gearbeitet habe kann ich dir nicht auf Anhieb sagen was schiefgeht... ich habe mir den String den er mit der Regex rauszieht immer ausdrucken lassen .... damit findet man den richtigen Ausdruck recht schnell....

fuffy
29.07.08, 09:53
Hi!

Dir fehlt ein * oder + hinter der zweiten Gruppierung, da "/verzeichnis" mehrfach auftauchen darf.

@Newbie314
[a-z-] heißt: alle Kleinbuchstaben und das Minuszeichen
Ob das vom OP so gewollt ist, weiß nur er. ;)

Gruß
fuffy