sas, prchange, reg ex, неструктурированные данные - PullRequest
0 голосов
/ 05 ноября 2018

Я просматриваю чей-то код. Что делает этот кусок кода? Я поправляюсь в PRXCHANGES и регулярных выражениях. Я еще не профессионал, но все еще учусь. Мне кажется, что он заменяет что-то вроде P.O. BOX с PO BOX. Есть ли \ s? иметь в виду необязательные пробелы? а 0? значит 0 необязательно? Также :? значит: необязательно? Похоже, я понимаю некоторые из них. Спасибо

   DATA _NULL_;
    X='P.O. BOX 123';
    Y=PRXCHANGE('s/0?\s?P\.\s?O\. BOX\:?/PO BOX/',-1,X);
    PUT Y;
RUN;

1 Ответ

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

очень важно документировать, когда кто-то использует регулярные выражения, чтобы другие могли понять

Как вы видите на выходе

  P.O. BOX 123 is converted into PO BOX 123

Объяснение некоторых важных вещей, используемых и используйте эту ссылку, чтобы понять в деталях http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003288497.htm

   ? indicates something is present 0 or 1 time
   example: "do(es)?" matches the "do" in "do" or "does"
     period(.) is another metacharacter it means any single character in regex
    to address period it has to escaped using \ it becomes \.
    \s indicates space

В prxchange это захваченная группа "0? \ S? P. \ s? O. BOX:?" который заменяется на / PO BOX /

 0? can have zero or may not have in start
followed by \s that is space \s? indicates it can be there or not.
followed by literal P followed by . that is P. 
followed by space or no space and literal 0 followed by .
folloed by space and Box and can have : or not

Это охватывает следующие несколько различных сценариев / паттернов

"0 P.O. BOX" will converted into PO BOX
"0 P.O. BOX:" will converted into PO BOX
"P.O. BOX:" will converted into PO BOX
"0 P.O. BOX" will converted into PO BOX
"P.O. BOX" will converted into PO BOX
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...