🔒 This topic is solved and locked.
Need further help from the community? Please
sign in and ask a new question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Posted 08-14-2021 02:34 AM
(2776 views)
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 🙂
1 ACCEPTED SOLUTION
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
2 REPLIES 2
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;