Rainer TS: Reguläre Ausdrücke: wie finde ich das / Zeichen?

Hallo,

ich habe folgenden regexp:

$regexp="/([0123]?\d|3[01]).(0?\d|1[012]|\s?(jan(uar)?|feb(ruar)?|m(ä|ä)r(z)?|apr(il)?|mai|juln?|aug(ust)?|sep(tember)?|okt(ober)?|nov(ember)?|dez(ember)?)).(20)?0[23]/si";

Es liefert mir verschiedene Datumsformate aus einem String. Ein Format macht allerdings Probleme: 00/00/0000 wohl wegen des "/".
Ich dachte der punkt steht für jedes beliebige Zeichen? Schließt das "/" im Datum das regexp vielleicht frühzeitig ab? Wie kann ich das umgehen? THX

  1. Hi,

    Ein Format macht allerdings Probleme: 00/00/0000 wohl wegen des "/".

    korrekt.

    Ich dachte der punkt steht für jedes beliebige Zeichen?

    Der Slash muss nicht für jedes beliebige Zeichen stehen, um andere als die erwarteten Ergebnisse zu liefern. Er braucht einfach nur eine Sonderbedeutung, die Du nicht haben willst. Und durch welches Zeichen schaltet man die Sonderbedeutung eines Zeichens aus? Tipp: In Regular Expressions ist es das gleiche wie in Strings (bei handelsüblichen Programmiersprachen wie PHP).

    Schließt das "/" im Datum das regexp vielleicht frühzeitig ab?

    Korrekt. Schau mal ganz an den Anfang der Regular Expression, vielleicht wird Dir der Grund dann klarer.

    Cheatah

    --
    X-Will-Answer-Email: No
  2. Hallo!

    Es liefert mir verschiedene Datumsformate aus einem String. Ein Format macht allerdings Probleme: 00/00/0000 wohl wegen des "/".

    Lies mal http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm#maskierung

    Grüße
    Andreas

  3. ok,

    ich muß vor den slash einen backslash setzen... das Problem ist dabei halt, das ich teilweise riesige html-dateien, welche ich vorher auf den reinen text reduziert habe, nach Datumsangaben durchforste... nun müsste ich also in dem ganzen string alle datumsangaben der Form 00/00/0000 gezielt suchen und z.b durch - ersetzen... aber das ist gewaltiger geschwindigkeitseinbruch da die gesamte Suche dann zweimal stattfinden muß. gibt es nicht irgendwie die Möglichkeit nach allen zeichen also . oder nach / zu suchen??? was ich bisher ausprobiert habe (.|/) funktioniert aber nicht...

    1. Hi,

      gibt es nicht irgendwie die Möglichkeit nach allen zeichen also . oder nach / zu suchen???

      "." beinhaltet den "/".

      was ich bisher ausprobiert habe (.|/)

      Technisch korrekt, inhaltlich sinnfrei (s.o.), und spätestens ab dem dritten einzelnen Zeichen mit einer Zeichenklasse besser lösbar.

      funktioniert aber nicht...

      "Funktioniert nicht" funktioniert nicht.

      Cheatah

      --
      X-Will-Answer-Email: No