Code:
^(@#D(?:GREGORIAN|JULIAN|HEBREW|FRENCH\s*R)@)?\s*(AB T|EST|CAL|INT)?\s*(\d*)\s*([a-zA-Z]*)?\s*(\d*)?(\s*/)?(\d*)?\s*(BC|B.C.)?\s*(.*)?$
sollte also funktionieren
Das funktioniniert schon mal hervorragend. Dankeschön dafür.
Was bei
Code:
1917BC // wird nicht korrekt geparst
nicht funktionieren soll, ist mir nicht klar. Allerdings sind die Punkte beim B.C. problematisch, die musst du im Regex escapen, weil ein Punkt erkennt jedes beliebige Zeichen als gültig und es würde auch z.B. BIC7 als gültig erkannt werden.
also (BC|B\.C\.)
So, das wird mittlerweile mittels folgendem String erkannt:
Code:
^(@#D(?:GREGORIAN|JULIAN|HEBREW|FRENCH\s*R)@)?(?:\s*)(ABT|EST|CAL|INT)?(?:\s*)(\d*)?(?:\s*)(JUN|AUG|VEND|TIS)?(?:\s*)(\d*)?(?:/)?(\d*)?(B\.C\.|BC)?$
Allerdings nach wie vor nicht die folgende Zeile:
Zitat:
INT 2 AUG 1917 (Mamas Geburtstag) // hier soll nur alles innerhalb der Klammer geparst werden, wobei Klammern und Inhalt ebenfalls optional sind.
Also was jetzt, willst du dass (ABT|EST|CAL|INT) gefunden wird oder nicht?
Also zur Erklärung des Datumseintrages der erkannt werden soll:
Kalendersystem (optional)
Wird keine dieser Angaben gefunden wird automatisch das Datum als Datum des gregorianischen Kalenders angenommen.
- @#DGREGORIAN@
- @#DJULIAN@
- @#DHEBREW@
- @#DFRENCH R@
Qualität (optional)- CAL (berechnetes Datum)
- EST (geschätztes Datum)
Datum- Tag (optional)
- Monat (optional, Monatsnamen abhängig vom Kalendersystem)
- Jahr
- B.C./BC (optional, nur möglich, wenn Jahresangabe alleine ohne Tag und Monat notiert ist)
Datum als Freitext- INT (Tag) (Monat) Jahr (Freitext)
- (Freitext)
Das ist also der Aufbau der Datumsnotation. Vielleicht hilft das beim Nachvollziehen.
Zitat:
Nebenbei: Was soll
@#DFRENCH R@ 02 VEND 1917
sein? Vendredi ist doch ein Wochentag und kein Monatsname?
Richtig, es ist Vendmaire (Monat des republikanischen Kalenders) gemeint
Zitat:
Noch was:
(\d*)? und (.*)?
Da ist das Fragezeichen unnötig, * bedeutet ja 0 mal oder öfter
Das hast Du natürlich völlig recht. Ich arbeite mich grade erst in die regulären Ausdrücke ein.