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