REGex ist sicherlich sehr mächtig, abder ich bevorzüge die bewährte Functionen weil das Lesen für mich einfacher ist.
Was nicht für mich klar ist, aber ich have die trennende Sonderzeichen beibehalten. Und kann auch Komma und Punkt als Trennzeichen vorkommen (Also, nicht nur in Zahlen).
data test;
input have $char30.;
length = length(have);
/* Position Zahl vorne - Finde erste Zeichen, kein Zahl und auch nicht , oder .*/
split_pos_zahl=findc(have,'.,','DK');
/* Position Sonderzeichen Finde erste nicht-alphabetisch Zeichen */
split_pos_sonder = findc(have,'ÄÖÜäöüß','AK');
/* Gross/klein : Erste Grosszeichen, ignoriere 1. */
split_pos_gross = findc(have,'ÄEÖÜ','U',2);
if 1 < split_pos_zahl < length then best_pos = split_pos_zahl;
else if 1 < split_pos_sonder < length then best_pos = split_pos_sonder;
else if 1 < split_pos_gross < length then best_pos = split_pos_gross;
if Best_pos > 1 then want = substrn(have,1,best_pos-1)||' '||substrn(have,best_pos);
cards;
Brief/Post
ERF!RSA
SOMMER:Winter
PostWichtige
225,00Freitext
15.01.2021Freitext
2RSA:
;
run;
... View more