0
假设的某些部分我有一个宏变量如下删除表达
%let var=a b(ref='aaa') c d(ref='zzz');
我想删除一切括号括起来,以获得结果a b c d
。我应该如何以优雅的方式去做这件事?
假设的某些部分我有一个宏变量如下删除表达
%let var=a b(ref='aaa') c d(ref='zzz');
我想删除一切括号括起来,以获得结果a b c d
。我应该如何以优雅的方式去做这件事?
正则表达式可以解决这个问题,看看这个:
%let var=a b(ref='aaa') c d(ref='zzz');
data _null_;
x=prxchange("s/\([^)]*\)//",-1,"&var");
put x=;
run;
日志显示:
x=a b c d
谢谢你,我正在寻找的东西!为了完整性,为了能够在宏内部使用答案,我必须修改它为:'%sysfunc(prxchange(%str(s/\%([^%)] * \%)//), - 1, “&VAR”));' –
我不觉得有优雅的方式这样做。您应该找到openinig括号,然后结束一个,然后使用其他SAS函数来操作类似'substr'或'tranwrd'函数的字符串来替换它。你有尝试过什么吗? – fl0r3k