AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

RegEx-Formatierung

Ein Thema von hansklok · begonnen am 10. Aug 2015 · letzter Beitrag vom 13. Aug 2015
 
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#7

AW: RegEx-Formatierung

  Alt 11. Aug 2015, 19:30
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:
Code:
1917/18 B.C.
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
    • duales Jahr (optional)
  • 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.
  Mit Zitat antworten Zitat
 

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz