RegEx-Ausdruck gesucht
am 23.09.2006 13:55:30 von Johannes Theile
Hallo,
ich suche einen RegEx-Befehl, um auf nachfolgenden Ausdruck zu prüfen.
Beispiel: iez-20060923101532-25.pdf
Also, übersetzt: iez-[Timestamp mit 14 Stellen]-[Zahl beliebig
lang].[Dateiendung 3 oder auch mehr Stellen]
Wie müsste der RegEx-Ausdruck dafür aussehen? Leider geht mir, wie so
einigen anderen auch, der RegEx-Syntax garnicht nahe. Leider.
Wäre schön, wenn mir da jemand helfen könnte,
Grüße,
Johannes
Re: RegEx-Ausdruck gesucht
am 23.09.2006 15:12:07 von Hadanite Marasek
Johannes Theile wrote:
> Hallo,
> ich suche einen RegEx-Befehl, um auf nachfolgenden Ausdruck zu prüfen.
>
> Beispiel: iez-20060923101532-25.pdf
> Also, übersetzt: iez-[Timestamp mit 14 Stellen]-[Zahl beliebig
> lang].[Dateiendung 3 oder auch mehr Stellen]
>
> Wie müsste der RegEx-Ausdruck dafür aussehen? Leider geht mir, wie so
> einigen anderen auch, der RegEx-Syntax garnicht nahe. Leider.
>
> Wäre schön, wenn mir da jemand helfen könnte,
Aus meiner Sicht so (preg):
/^iez-[0-9]{14}-[0-9]+\.[a-z]{3,}$/
Kurz erklärt:
^ und $ heisst Start und Ende, wenn also mehr dazu kommt -> kein match
[0-9]{} Zahlen von 0-9, 14 Stellen
[0-9]+ x-beliebig viele Zahlen, aber mindestens eine (nimm * für keine
bis x-beliebig)
\. Punkt
[a-z]{3,} Mindestens drei Buchstaben. Du kannst mit {3,10} auch auf
mindestens 3, höchstens 10 eingrenzen. Mit [a-zA-Z] erlaubst Du auch
Grossbuchstaben.
Den Timestamp würde ich an Deiner Stelle nochmal gesondert zerlegen und
auf Plausibilität prüfen:
$array["year"] = substr($string, 4, 4);
$array["month"] = substr($string, 8, 2);
$array["day"] = substr($string, 10, 2);
$array["hour"] = substr($string, 12, 2);
$array["minute"] = substr($string, 14, 2);
$array["second"] = substr($string, 16, 2);
Da die Stunden, Minuten und Sekunden leichte Regeln haben, kannst Du sie
auch mit Regex prüfen (nochmal ganzer Ausdruck):
"/^iez-[0-9]{8}[0-2]{1}[0-9]{1}[0-5]{1}[0-9]{1}[0-5]{1}[0-9] {1}-[0-9]+\.[a-z]{3,}$/"
Das ist aber ungetestet.
Gruss H. Marasek
Re: RegEx-Ausdruck gesucht
am 23.09.2006 15:56:04 von Claus Reibenstein
Hadanite Marasek schrieb:
>> Beispiel: iez-20060923101532-25.pdf
>> Also, übersetzt: iez-[Timestamp mit 14 Stellen]-[Zahl beliebig
>> lang].[Dateiendung 3 oder auch mehr Stellen]
>
> /^iez-[0-9]{14}-[0-9]+\.[a-z]{3,}$/
Bis auf "[a-z]{3,}" und die beiden Schrägstriche bin ich geneigt, Dir
zuzustimmen. Hadanite schrieb aber nirgends, aus welchen Zeichen die
Dateiendung bestehen soll. Ich würde daher hier _alle_ Zeichen zulassen,
statt "[a-z]{3,}" also z.B. ".{3,}" oder "...+" benutzen.
> Da die Stunden, Minuten und Sekunden leichte Regeln haben, kannst Du sie
> auch mit Regex prüfen (nochmal ganzer Ausdruck):
> "/^iez-[0-9]{8}[0-2]{1}[0-9]{1}[0-5]{1}[0-9]{1}[0-5]{1}[0-9] {1}-[0-9]+\.[a-z]{3,}$/"
Du hast die Regeln für Monat und Tag vergessen :-)
Ich weiß, die sind nicht ganz eindeutig, aber eine gewisse Prüfung kann
man da schon einbauen. Und die vielen "{1}" kannst Du auch weglassen:
^iez-[0-9]{4}[0-1][0-9][0-3][0-9][0-2][0-9][0-5][0-9][0-5][0 -9]-[0-9]+\....+$
> Das ist aber ungetestet.
Dito.
Gruß. Claus
Re: RegEx-Ausdruck gesucht
am 25.09.2006 03:59:21 von Johannes Theile
Hallo,
danke Euch beiden, jeweils fuer die Antwort. Habe es hinbekommen, so
wie ich es wollte.
Gruesse,
Johannes