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!
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.