[Python-de] logisches nicht bei RegEx

Heike C. Zimmerer hcz at hczim.de
Sam Jun 28 01:57:35 EDT 2003


Albert.Hermeling at t-online.de (Albert Hermeling) writes:

> Hallo Mailingliste,
>
> ich haenge schon wieder bei den RegEx diesmal moechte ich einen String darauf 
> ueberpruefen ob er Zahl, Datum oder alphanumerisch ist.

Regexs wurden ja schon mehrere vorgeschlagen.  Du könntest auch einen
anderen Weg einschlagen, der in Python besonders elegant geht: warum
schaust Du nicht nach, ob sich mit dem Objekt das Gewünschte machen
lässt und fängst die Exception ab?

Ohne es genauer zu überprüfen, etwa so:

try:
    time.strptime(s, "%d.%m.%Y")
    return("Datum")
except ValueError:
   try:
     float(s)
     return("Zahl")
   except ValueError:
    :
    :

> alphanumerisch="Alle Latin1 Zeichen gemischt"

Das musst Du genauer fassen.  Zum einen sind Zahl und Datum eine
Untermenge von Latin1, Du willst sie also wahrscheinlich vorher
ausschließen.  Zum anderen: falls Dein Input-Zeichensatz Latin1 ist,
kannst Du ja gar keine anderen Zeichen erhalten.  Falls Du mit Unicode
arbeitest, hilft s.encode() und Abfangen der Exception.  Vermutlich
meinst Du aber einen Subset von Latin1.  Da würde ich auch eine
passende Regex für das einfachste halten.


Gruß,

 Heike