регулярные выражения в SAS - как убрать пробелы вокруг специальных символов? - PullRequest
0 голосов
/ 12 сентября 2018

Что касается адресных данных, кто-нибудь будет иметь представление о том, как убрать пробелы вокруг специальных символов в числовом бите этих записей? Для третьей записи, например, я хочу иметь «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;

1 Ответ

0 голосов
/ 12 сентября 2018

Я сделал для вас RegEx, который должен работать:

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

Он выбирает ноль или более непробельных пробелов, затем пробел, за которым не следует ни один из ваших персонажей, затем один или несколько любых символов., убедившись, что предыдущий символ не является ни одним из ваших персонажей.Это не элегантно, и вам придется раздеть пустые апельсины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...