Data test;
input city $;
datalines;
arjepogs
askers
Londons
;
run;
data cities;
set test;
if prxmatch("/^(.*?)s$/",city)
then city=prxchange("s/^(.*?)s$/$1/",-1,city);
run;
data have;
input city $20.;
datalines;
arjepogs
Kent
askers
Londons
;
data want;
set have;
length new_city $20 ;
new_city=prxchange("s/^(.*?)s$/$1/",-1,trim(city));
run;
测试结果
Obs city new_city
1 arjepogs arjepog
2 Kent Kent
3 askers asker
4 Londons London
2条答案
按热度按时间hgb9j2n61#
您将CITY定义为长度$8。在London中的s位于字符串的第7个位置。而不是字符串的最后一个位置。使用TRIM()函数删除变量值中的尾随空格。
测试结果
您也可以只更改REGEX以考虑尾随空格。
aor9mmx12#
下面是另一个只使用SAS字符串函数而不使用正则表达式的解决方案。请注意,在这种情况下,不需要修剪变量: