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-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

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