0

对于地址数据,有人知道如何去除这些记录的数字位中特殊字符周围的空格吗?例如,对于第三条记录,我想要“44/95”而不是“44 / 95”。我想对所有“/”、“-”、“|”执行此操作的特殊字符 和 ”,”。我猜使用正则表达式是最好的方法,但我想不出该怎么做。

data addresses1;
infile datalines ; 
input @1 address $35. ;
format address $50.;
datalines;                      
26 32-50 CENTRE DANDENONG ROAD
9 /93-95  DANDENONG ROAD EAST 
44 / 95 OUTER CRESCENT   
17| 21-25 PARKHILL DRIVE      
run;

我试过类似下面的代码,但没有奏效。有人可以指出我正确的方向吗?

data addresses2;
set addresses1;
format fixed_address fixed_address2 $255.;
address=strip(address);

fixed_address2=compbl(strip(prxchange("s/(?<=[\|.\(\)\{\}\-\:\s\*\;\.\#\&\_\/\\]) +(?=\[\|.\(\)\{\}\-\:\s\*\;\.\#\&\_\/\\])/$1/",-1,strip(fixed_address))));

run;
4

1 回答 1

1

我为你做了一个正则表达式,应该可以:

\S*( ?(?![/|,-])).*(?<![[/|,-])

它选择零个或多个 Non-Whitesspaces,然后是一个空格,后面没有你的任何字符,然后是一个或多个任何字符,确保前一个字符不是你的任何字符。它不优雅,你将不得不剥离空机器。

于 2018-09-12T02:02:25.783 回答