BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
MrTAL
Fluorite | Level 6

Hi, I have a variable called "Customer_Comment " (a string) with free text and I need to extract rest of the comment after specific word.

 

Word word word word word KEYword word word word word word

Word word KEYword word word word word

Word word word word word

Word word word word word word word word KEYword word word word.

 

The comments are something like above and what I need is to extract all the text after the key word, if the Keyword exists in the comment, so the result would be like below..

 

word word word word word.

word word word word.

word word word.

 

I have tried few functions such as SCAN,FIND,SUBSTR but couldn't get it done, so any help is much appreciated!

1 ACCEPTED SOLUTION

Accepted Solutions
PaigeMiller
Diamond | Level 26

UNTESTED CODE

 

data want;
    set have;
    where=find(customer_comment,'KEYword');
    remaining_text=substr(customer_comment,where+length('KEYword'));
run;
--
Paige Miller

View solution in original post

7 REPLIES 7
PaigeMiller
Diamond | Level 26

UNTESTED CODE

 

data want;
    set have;
    where=find(customer_comment,'KEYword');
    remaining_text=substr(customer_comment,where+length('KEYword'));
run;
--
Paige Miller
MrTAL
Fluorite | Level 6
Thank you so much.. it worked..
HarrySnart
SAS Employee
Hi, do you have access to Visual Text Analytics? This would be straightforward with LITI syntax in a concept rule. Otherwise you might want to try regular expressions. For example you could use PRXMATCH to match against the pattern then return the remained or the string.

You might try something like this if the data is simple enough:

data want;
set have;
*find pattern location (add 7 to discard keyword);
position = prxmatch('/KEYword/',text) + 7;
*substring remainder of text;
if position gt 7 then out = substr(text,position);
keep text position out;
run;
MrTAL
Fluorite | Level 6
Thank you so much.. this works tooo
MrTAL
Fluorite | Level 6
and.. Unfortunately I don't have access to Visual Text Analytics. I work with SAS EG. However your solution worked.. So all good.
Oligolas
Barite | Level 11
want=prxchange('s/.*?KEYword(.*)/$1/',-1,have);

as for example in

DATA demo;
   LENGTH have want $100;
   have="Word word word word word KEYword word1 word2 word3 word4 word5";
   want=prxchange('s/.*?KEYword(.*)/$1/',-1,have);
RUN;
________________________

- Cheers -

MrTAL
Fluorite | Level 6
Thank you so much.. All these solutions do work

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 7 replies
  • 1938 views
  • 3 likes
  • 4 in conversation