DATA Step, Macro, Functions and more

Question about prxchange

Accepted Solution Solved
Reply
PROC Star
Posts: 7,492
Accepted Solution

Question about prxchange

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;


Accepted Solutions
Solution
‎04-14-2015 12:24 AM
Trusted Advisor
Posts: 1,301

Re: Question about prxchange

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

;

View solution in original post


All Replies
Solution
‎04-14-2015 12:24 AM
Trusted Advisor
Posts: 1,301

Re: Question about prxchange

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

;

PROC Star
Posts: 7,492

Re: Question about prxchange

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!

🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 172 views
  • 2 likes
  • 2 in conversation