如果特殊,SAS 删除最后一个字符
SAS remove the last characters if special
我有一个名为 response 的变量的 sas 数据集,它有以下记录:
等等。
这些都是相同的记录,我需要删除最后一个特殊字符,return 记录为
当我使用压缩函数时,它会删除 return 和 return 之间的星号:
TrailerOffer 这不是我想要的。
有人可以帮我编码吗?如果这些字符很特殊,我需要删除最后一个字符。
prx=prxchange("s/^W*(.*?)\W*$//",-1, response);
将删除结尾的特殊字符
data have;
length response .;
response="Trailer*Offer";output;
response="Trailer*Offer*";output;
response="Trailer*Offer???";output;
response="Trailer*Offer?...";output;
run;
data _null_;
set have;
prx=prxchange("s/^W*(.*?)\W*$//",-1, response);
put prx;
run;
77
78 data _null_;
79 set have;
80 prx=prxchange("s/^W*(.*?)\W*$//",-1, response);
81 put prx;
82 run;
Trailer*Offer
Trailer*Offer
Trailer*Offer
Trailer*Offer
您可以使用正则表达式字符 classes 来指定 'special' 结尾字符。在此示例替换模式中,任何非字母或数字的字符都将被删除。 \s*
在 $
之前是必需的,因为 SAS 字符变量在将值传递给正则表达式引擎时会有尾随空格。
中了解有关正则表达式 class 分组的更多信息
data have;
length response .; input response; datalines;
Trailer*Offer
Trailer*Offer*
Trailer*Offer???
Trailer*Offer?...
Offer#1
Offer#1?
Offer#1*?
;
data want;
set have;
response = prxchange ('s/[^a-z0-9]+\s*$//i', 1, response);
run;
我有一个名为 response 的变量的 sas 数据集,它有以下记录:
等等。
这些都是相同的记录,我需要删除最后一个特殊字符,return 记录为
当我使用压缩函数时,它会删除 return 和 return 之间的星号: TrailerOffer 这不是我想要的。 有人可以帮我编码吗?如果这些字符很特殊,我需要删除最后一个字符。
prx=prxchange("s/^W*(.*?)\W*$//",-1, response);
将删除结尾的特殊字符
data have;
length response .;
response="Trailer*Offer";output;
response="Trailer*Offer*";output;
response="Trailer*Offer???";output;
response="Trailer*Offer?...";output;
run;
data _null_;
set have;
prx=prxchange("s/^W*(.*?)\W*$//",-1, response);
put prx;
run;
77
78 data _null_;
79 set have;
80 prx=prxchange("s/^W*(.*?)\W*$//",-1, response);
81 put prx;
82 run;
Trailer*Offer
Trailer*Offer
Trailer*Offer
Trailer*Offer
您可以使用正则表达式字符 classes 来指定 'special' 结尾字符。在此示例替换模式中,任何非字母或数字的字符都将被删除。 \s*
在 $
之前是必需的,因为 SAS 字符变量在将值传递给正则表达式引擎时会有尾随空格。
data have;
length response .; input response; datalines;
Trailer*Offer
Trailer*Offer*
Trailer*Offer???
Trailer*Offer?...
Offer#1
Offer#1?
Offer#1*?
;
data want;
set have;
response = prxchange ('s/[^a-z0-9]+\s*$//i', 1, response);
run;