Hi,
i want to extract all last numeric value from a given string. Datasets are given below with input and output.
data have;
input string $20.;
cards;
P@123kjh2345
r@ty56kli122
ghjgdj788jkjlk23456
;
run;
data want;
input string $20.;
cards;
2345
122
23456
;
run;
Thank you All 🙂
Hi @singhsahab,
You can also use the SCAN function to extract the last "word" (second argument -1) of the string, treating all non-digit characters as delimiters (fourth argument 'kd', third argument empty).
data want;
set have;
string=scan(string,-1,,'kd');
run;
How about
data have;
input string $20.;
cards;
P@123kjh2345
r@ty56kli122
ghjgdj788jkjlk23456
;
run;
data want(keep = string lastnum);
set have;
pid = prxparse('/(\d+)(?!.*\d)/');
if prxmatch(pid, string) then
call prxposn(pid, 1, p, l);
lastnum = substr(string, p, l);
run;
Result:
string lastnum P@123kjh2345 2345 r@ty56kli122 122 ghjgdj788jkjlk23456 23456
Hi @singhsahab,
You can also use the SCAN function to extract the last "word" (second argument -1) of the string, treating all non-digit characters as delimiters (fourth argument 'kd', third argument empty).
data want;
set have;
string=scan(string,-1,,'kd');
run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.