Использование REGEX для создания дубликатов в окне поиска / замены - PullRequest
0 голосов
/ 23 мая 2019

У меня есть строка слов, разделенных табуляцией.

Допустим, я хочу заключить каждое слово в квадратные скобки и добавить "sum"

, поэтому я использую функцию поиска / замены для замены\ т с) \ т, сумма (.

т. от

ABCDE

Я получаю

сумма (A), сумма (B), сумма (C), сумма (D), сумма (E)

Но что делать, если я хочу дублировать слова.

то есть

перейти от:

ABCDE

до

сумма (A) как A, сумма (B) как B,сумма (C) как C, сумма (D) как D, сумма (E) как E?

https://docs.microsoft.com/en-us/dotnet/standard/base-types/substitutions-in-regular-expressions

не сработало.

Рассматриваемая среда - SAS EG 7.1

1 Ответ

2 голосов
/ 23 мая 2019

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

Ваш пример будет преобразован в такой макрос:

%macro sumlist(varlist);
%local i word sep;
%do i=1 %to %sysfunc(countw(&varlist));
  %let word=%scan(&varlist,&i);
&sep.sum(&word) as &word
  %let sep=,;
%end;
%mend sumlist;

Который вы могли бы затем вызвать в своей программе, чтобы сгенерировать часть оператора SQL.

proc sql ;
create table want as 
  select %sumlist(a b c d e)
  from have 
;
quit;

Тогда, если вам действительно нужен редактор, который поможет вам создать код, вы говорите только о добавлении постоянного префикса %sumlist( и суффикса ) вокруг выбранного списка имен переменных.

...