sas, regex, числа, подстрока, prxchange - PullRequest
0 голосов
/ 05 ноября 2018

Мне нужна помощь с кодом ниже. Я не вижу, как это извлечь номер из этого текста строки адреса. Когда это (образец) говорит s/\D/ /, я думал, что это заменяет цифры пробелом. Я знаю, что вторая часть здесь берет подстроку до первого пробела в тексте адресной строки. Но тогда я не вижу, как это извлечь цифры. Я поднял набор данных, и похоже, что это работает. Пожалуйста, помогите мне понять, как это работает.

DATA OUT.REQ_1_2_03;
        SET OUT.REQ_1_2_02;
    /*  GET STREET NUMBER*/
        PRE_RCV_ST_NB=PRXCHANGE('s/\D/ /',-1,SUBSTR(PRE_RCV_ADDRESSS_LINE_1,1,PRXMATCH('/\s/',PRE_RCV_ADDRESSS_LINE_1)));
        POST_RCV_ST_NB=PRXCHANGE('s/\D/ /',-1,SUBSTR(POST_RCV_ADDRESSS_LINE_1,1,PRXMATCH('/\s/',POST_RCV_ADDRESSS_LINE_1)));
        PRE_HOST_ST_NB=PRXCHANGE('s/\D/ /',-1,SUBSTR(PRE_HOST_ADDR_LINE_1,1,PRXMATCH('/\s/',PRE_HOST_ADDR_LINE_1)));
        POST_HOST_ST_NB=PRXCHANGE('s/\D/ /',-1,SUBSTR(POST_HOST_ADDR_LINE_1,1,PRXMATCH('/\s/',POST_HOST_ADDR_LINE_1)));   
    RUN;

1 Ответ

0 голосов
/ 05 ноября 2018

попытайтесь понять, используя пример

     PRE_RCV_ADDRESSS_LINE_1 ="123hello Village st"

начать с левой стороны кода.

first use prxmatch and it finds first space(\s)that comes 123hello
do  substr till that space and you get 123hello
then remove  prxchanges to replace \D (that is anything other than digit) and 
is converted to 123

чтобы подвести итог на примере

 "123hello Village st" -- find space(\s) by prxmatch and substring till space gives "123hello"
 "123hello" is changed to "123" by prxchange which replaces anything other than digit(\D) .

 /* run this step to understand it better*/
 data want ;
 PRE_RCV_ADDRESSS_LINE_1 = "123hello Village st";
 test1= SUBSTR(PRE_RCV_ADDRESSS_LINE_1,1,PRXMATCH('/\s/',PRE_RCV_ADDRESSS_LINE_1));
 PRE_RCV_ST_NB= PRXCHANGE('s/\D//',-1,SUBSTR(PRE_RCV_ADDRESSS_LINE_1,1,PRXMATCH('/\s/',PRE_RCV_ADDRESSS_LINE_1)));
 run;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...