DATA Step, Macro, Functions and more

Reg expression

Reply
Super Contributor
Posts: 673

Reg expression

I used the following reg expression to separate the physicians name as first and last.
_EXPR='s/(Dr.)?(\s*\S*)\s*?\S*?(\s+)(\S*)\s*(MD|M.D.)\s*/$2 $4/i';
_REGX=prxparse(_EXPR);
_PRX=prxchange(_REGX,1,name);
* split parsed text into desired variables;
physician_FIRST_name=scan(_PRX,1);
physician_LAST_name=scan(_PRX,2);

The above logic is not working for Dr. William Patterson.
I',m getting physician_FIRST_name as Dr and physician_last_name as William.
How to get William Patterson as first and last names.
Super Contributor
Posts: 474

Re: Reg expression

I'm guessing the MD|M.D. is optional, so your missing a ? after that (makes the preceding item optional).

Add the ? (see under), then it should work fine for Dr. William Patterson.
[pre]
_EXPR='s/(Dr.)?(\s*\S*)\s*?\S*?(\s+)(\S*)\s*(MD|M.D.)?\s*/$2 $4/i';
[/pre]
Cheers from Portugal

Daniel Santos @ www.cgd.pt
Ask a Question
Discussion stats
  • 1 reply
  • 102 views
  • 0 likes
  • 2 in conversation