使用REGEX在重复的查找/替换窗口中创建重复项

时间:2019-05-23 18:26:22

标签: regex replace sas enterprise-guide

我有一串由制表符分隔的单词。

让我说我想用括号将每个单词括起来并添加“ sum”

所以我使用查找/替换功能将\ t替换为)\ t,sum(。

来自

  

A B C D E

我明白了

  

sum(A),sum(B),sum(C),sum(D),sum(E)

但是如果我想重复这些单词怎么办。

来自:

  

A B C D E

  

sum(A)作为A,sum(B)作为B,sum(C)作为C,sum(D)作为D,sum(E)作为E?

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

没有用。

有问题的环境是SAS EG 7.1

1 个答案:

答案 0 :(得分:2)

如果您不知道如何使编辑器为您生成代码,为什么不创建一个宏以在提交给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(和后缀)