[Python-de] logisches nicht bei RegEx

Karl Pflästerer sigurd at 12move.de
Fre Jun 27 20:50:14 EDT 2003


On 27 Jun 2003, Albert Hermeling <- Albert.Hermeling at t-online.de wrote:

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

> Beispiel:

> datum="01.01.2003"

> keindatum="01-01.2003"

> zahl1="12345"

> zahl2="123,45"

> zahl3="-12345,12"

> keinezahl="ab1245,45"

> alphanumerisch="Alle Latin1 Zeichen gemischt"

> Mit RegEx ist es mir bis jetzt nicht gelungen. 


(a) zum Datum: das Datum hat also immer die Form dd.mm.yyyy oder auch
    d.m.yyyy?
    o zum ersten Fall: sre.compile(r'\d{2}\.\d{2}\.\d{4}')
    o zum zweiten Fall: sre.compile(r'\d{1,2}\.\d{1,2}\.\d{4}')

(b) Eine Zahl darf also Ziffern, Kommata und Vorzeichen enthalten. Meine
    Lösung sieht leider ein wenig kompliziert aus, aber ich weiß nicht,
    was alles bei dir vorkommen kann.
    sre.compile(r'(?:(?=\s)|^)[+-]?\d+,?\d*\b')
    Wegen des Vorzeichens funktioniert »\b« am Anfang nicht.

(c) Alphanumerisch und ein wenig mehr. Meinst du damit alles was
    zwischen ASCII 33 und 255 kein ASCII mehr ich weiß) liegt?
    o sre.compile(r'[\x21-\xff]+')

HTH

   Karl
-- 
Der wahre Weltuntergang ist die Vernichtung des Geistes, der andere hängt von
dem gleichgiltigen Versuch ab, ob nach der Vernichtung des Geistes noch eine
Welt bestehen kann.
                   Karl Kraus 'Untergang der Welt durch schwarze Magie'