You might be better of saving more of the 'pretext' (context previous to) of the date.
Example:
Find up to 5 'dates' in a slash date format and their pretexts.
data have;
infile cards truncover;
input text $char100.;
datalines;
1/1/2020 opening
The shop will close on 8/21/20. They will have until 9/21/20 to reopen it again.
Somebody opened on 20AUG2020, a day before me!
Last call
closing 8/22/2020
;
data want(keep=text date: pretext:);
set have;
array pretext(3) $100 ;
array datestr(3) $10;
rxid = prxparse ('/(\d{1,2}\/\d{1,2}\/\d{2,4})/');
start = 1;
stop = -1;
put /text=;
do index = 1 to dim(datestr);
prepos = start;
call prxnext(rxid, start, stop, text, position, length);
put prepos= start= stop= position= length=;
if position > prepos then
pretext(index) = substr(text, prepos, position-prepos);
if position > 0 then
datestr(index) = substr(text, position, length);
else
pretext(index) = substr(text, start);
if length = 0 then leave;
end;
run;
... View more