使用 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(
和后缀 )
。
我有一串由制表符分隔的单词。
假设我想用方括号括起每个单词并添加 "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(
和后缀 )
。