2016-08-22 28 views
0

假設的某些部分我有一個宏變量如下刪除表達

%let var=a b(ref='aaa') c d(ref='zzz'); 

我想刪除一切括號括起來,以獲得結果a b c d。我應該如何以優雅的方式去做這件事?

+0

我不覺得有優雅的方式這樣做。您應該找到openinig括號,然後結束一個,然後使用其他SAS函數來操作類似'substr'或'tranwrd'函數的字符串來替換它。你有嘗試過什麼嗎? – fl0r3k

回答

1

正則表達式可以解決這個問題,看看這個:

%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 
+1

謝謝你,我正在尋找的東西!爲了完整性,爲了能夠在宏內部使用答案,我必須修改它爲:'%sysfunc(prxchange(%str(s/\%([^%)] * \%)//), - 1, 「&VAR」));' –