Problem beim REGEX

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Gesperrt
Josef
User
Beiträge: 3
Registriert: Freitag 6. Januar 2012, 16:21

Hallo zusammen,
ich versuche eine REGEX zu erzeugen, die das Datum eines Strings detektiert.
Die Formate, die ich detektieren will, sind:
JJJJ-MM-DD
DD.MM.JJJJ
MM/DD/JJJJ
Ich baue einen String, mit den drei Formate, so:

Code: Alles auswählen

startformats = r"""(\d\d\d\d-\d?\d-\d?\d)|
(\d?\d\.\d?\d\.\d\d\d\d)|
(\d?\d?/\d?\d/\d\d\d\d)\s*"""
Dann definiere ich die REGEX

Code: Alles auswählen

myregex = re.compile(r'^\s*'+startformats+r'\s*$', re.UNICODE)
Aber dadurch kann ich nur ein Datum des ersten Typus (ex: 1988-3-22) nehmen.
Warum funktionieren nicht die or (|) Anweisungen.

Danke im Voraus
lunar

@Josef: Die funktionieren schon. Deine Muster stimmen nicht. Die Zeilenumbrüche in der Definition von "startformats" zählen zum Inhalt der Zeichenkette und mithin auch zum regulären Ausdruck. Folglich treffen die zweite und dritte Alternative nur dann zu, wenn das zu findende Datum am Anfang einer neuen Zeile steht.

Wieso tust Du nicht einfach das, was Dir in der letzten Diskussion vorgeschlagen wurde? Du wirst nicht ewig damit durchkommen, die Vorschläge voran gegangener Diskussionen zu ignorieren und stattdessen dieselbe Frage in leicht veränderter Form erneut zu stellen. Irgendwann antwortet dann niemand mehr. Ehrlich gesagt, habe ich obigen Hinweis auch nur gegeben, weil ich erst danach bemerkt habe, dass Du die Frage schon einmal gestellt und dort sämtliche Vorschläge offenbar ignoriert hast.
Zuletzt geändert von lunar am Donnerstag 12. Januar 2012, 17:16, insgesamt 1-mal geändert.
deets

Gibt es einen Grund, warum du die Hinweise in dem ersten Thread von dir zu dem Thema ignorierst, und einen neuen aufmachst?
Josef
User
Beiträge: 3
Registriert: Freitag 6. Januar 2012, 16:21

@lunar: Danke für deine schnelle Antwort.
@deets: Sorry, aber ich habe eure Antwort nicht verstanden, und aus diesem Grund habe ich eine neue Frage gestellt. Eingentlich fande ich zu dumm, wieder euch zu fragen, was gemeint wird. :oops:

Beste Grüße fur beide

Edit (Leonidas): Geschlossen. Bitte weitere Diskussion im ursprünglichem Thread.
Gesperrt