How does one identify 0 or more spaces? I thought that the following would work, but it fails for the 2nd record ("Jones, Fred") because the , and F are separated by two spaces. It works for all of the other records.
data ReversedNames;
input name & $32.;
datalines;
Smith,Tom
Jones, Fred
Kavich, Kate
Turley, Ron
Dulix, Yolanda
;
/* Reverse last and first names with a DATA step. */
data names;
set ReversedNames;
name = prxchange('s/(\w+),\s*(\w+)/$2 $1/', -1, name);
run;
Art,
There is no issue with your regular expression. The issue is with your reading of the ReversedNames cards. & will only move past the first space with list input.
filename ft15f001 temp;
data ReversedNames;
length name $ 32;
infile ft15f001 length=len;
input @1 name $varying. len;
list;
parmcards;
Smith,Tom
Jones, Fred
Kavich, Kate
Turley, Ron
Dulix, Yolanda
;
Art,
There is no issue with your regular expression. The issue is with your reading of the ReversedNames cards. & will only move past the first space with list input.
filename ft15f001 temp;
data ReversedNames;
length name $ 32;
infile ft15f001 length=len;
input @1 name $varying. len;
list;
parmcards;
Smith,Tom
Jones, Fred
Kavich, Kate
Turley, Ron
Dulix, Yolanda
;
Matt,
Thanks! While I've obviously forgotten things I know, at least I'm FINALLY getting around to learning at least a little about regular expressions!
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.