SAS - извлечь 8-значный шаблон с помощью регулярных выражений / prxmatch - PullRequest
0 голосов
/ 02 июля 2019

Каков наилучший способ извлечь штамп даты в формате yyyymmdd из существующей строки в SAS?

Из того, что я прочитал, кажется, что проще всего использовать регулярные выражения с prxmatch функция для замены всего , но шаблона.

  • Давайте предположим, что единственным 8-значным шаблоном в строке будет моя дата, поэтому достаточно шаблона [0-9]{8}.

Вот что у меня есть для замены 8-значных шаблонов на строку empty (для удобства чтения):

data b(keep=have want);

    /* HAVE */
   have = '&libroot_hr./import/sxh3j900/20190702_SXH3J900_DWH_Adresse.txt';
   regexp = 's/[0-9]{8}/empty/';
   times  = -1;  /* -1: replace all occurences */

    /* WANT */
   want = prxchange(regexp, times, have);

   /* Result
       '&libroot_hr./import/sxh3j900/empty_SXH3J900_DWH_Adresse.txt'
   */

run;

Как я могу изменить это, чтобы он заменял все но любые 9-значные шаблоны со строкой empty?

1 Ответ

2 голосов
/ 02 июля 2019
data b(keep=have want);
   have='&libroot_hr./import/sxh3j900/20190702_SXH3J900_DWH_Adresse.txt';
   re = prxparse("/(\d{8})/"); 
   if prxmatch(re,have) then do;
      want = prxposn(re,0,have);
   end;
run;

Если вы хотите просто извлечь первые 8 цифр.

Здесь регулярное выражение в ггггммдд формат.

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