RegEx-Ausdruck gesucht

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 23.09.2006 15:59:07 von Claus Reibenstein

Claus Reibenstein schrieb:

> zuzustimmen. Hadanite schrieb aber nirgends, aus welchen Zeichen die

Nix Hadanite. Ich meinte natürlich Johannes. Sorry.

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