Thema: Delphi CSV anpassen

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#43

AW: CSV anpassen

  Alt 26. Jan 2021, 20:18
Mit RegEx kann man einmal "einfacher" komplexere Trennstrukturen definieren -> für Splittfunktionen, Stück für Stück von vorne das zerlegen und/oder mittendrin suchen,
oder man zerlegt damit gleich alles und lässt sich je Zeile die gewünschten Dinge als Gruppe liefern.

https://regex101.com/r/KmWkd8/5
Gruppe 9/10 sollten hier leer bleiben, außer eine Zeile wurde garnicht, bzw. nicht richtig gelesen.

Grundsätzlich kann man so die Gruppen nun nehmen und in die jeweiligen Spalten der CSV übertragen.
Oder man nimmt es für ein RegEx-Replace und führt es per Substitution via $1;$2;$4;$5;$6;$7;$8 als CSV zusammen.

z.B. #...#gm (Multiline)
Code:
^(Herr|Frau)? *((:?Dr\. |Prof\. |Dipl\.-Ing\. |med\. |rer\. |nat\. )*)?(.*)(?:, )?(.*)? mit (.+)/([A-Z0-9]{3}) \(([0-9]+)\): Terminplan\(([0-9]{2}:[0-9]{2})\ Uhr\)(.*)$|^(.*)$
bzw. #...#gmx (Multiline eXtended)
Code:
^
(Herr|Frau)?\s*
((:?
Dr\.\s
|Prof\.\s
|Dipl\.-Ing\.\s
|med\.\s
|rer\.\s
|nat\.\s
)*)
(.*)
\smit\s
(.+)/([A-Z0-9]{3})\s\(([0-9]+)\):
\sTerminplan
\(([0-9]{2}:[0-9]{2})\sUhr\)
(.*)
$
|
^(.*)$
mit
Code:
Herr Mustermann1 mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Herr Mustermann2, Max mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Herr Dr. Mustermann3 mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Herr Dr. Mustermann4, Max mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Herr Prof. Dr. Mustermann5 mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Herr Prof. Dr. Mustermann6, Max mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Herr Prof. Dr. rer. nat. Mustermann7, Max mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Herr Prof. Dr. Dipl.-Ing. Hummel, Johann-Nepomuk mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Frau Dr. Wespe, Natalie mit ABCDEFGHI/00A (1): Terminplan(08:00 Uhr)
Frau Dr. med. Müller-Lüdenscheid, Cleopatra mit Julius Cäsar/00A (1): Terminplan(08:00 Uhr)
Herr van Gogh, Vincent Willem mit Gustav Klimt/00A (1): Terminplan(08:00 Uhr)
Herr Wells, H. G. mit Böll, Heinrich/00A (1): Terminplan(08:00 Uhr)

[edit]
(?:, )?(.*)? funktioniert so nicht.
Den Teil kann man auch weglassen ... war so geplant, dass Nachname, Vorname getrennt wird. (der Vorname steht aktuell in der Nachname-Gruppe mit drin)
Wenn es funktioniert, dann könnte man auch beim zweiten Namen noch soeine Trennung einfügen.

Und Dipl.-Ing. und rer. nat. fehlen auch noch, bei den Titeln. (dieser Titel rutscht daher aktuell mit in die Name- bzw. Nachname-Gruppe rein)
Irgendwas stimmt da auch noch nicht ... irgendwie steht aktuell nur die letzte Angabe in der Gruppe.

Es kann auch nicht schaden das mit den Leerzeichen nochmal bissl zu überarbeiten. (fällt z.B. bei den Titeln in der gezeigten Substitution auf)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (26. Jan 2021 um 23:21 Uhr)
  Mit Zitat antworten Zitat