使用 REGEX 在查找/替换 window 中创建重复项

Using REGEX to create duplicates in find / replace window of an

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

假设我想用方括号括起每个单词并添加 "sum"

所以我使用 find/replace 函数将 \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) as A, sum(B) as B, sum(C) as C, sum(D) as D, sum(E) as E ?

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

没有成功。

有问题的环境是 SAS EG 7.1

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