表現

2016-08-22 3 views
0

の特定の部分を削除し表現

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

を次のように私は結果a b c dを取得するために、括弧で囲まれたすべてのものを削除するマクロ変数があるとします。どのように私はエレガントな方法でこれを行うに行く必要がありますか?

+0

私はエレガントな方法これを行うことはないと思います。あなたはopeninigかっこを見つけて終了する必要がありますし、 'substr'や' tranwrd'関数のような文字列を操作するために、他のSAS関数を使ってください。何か試しましたか? – 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")); ' –