- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I have run the code (please see below)
data have;
input = "CRH PLC TO BID FOR PPC LTD";
run;
data want;
set have;
temp=input;
p=prxmatch('/\b(TO BID)\b/i',temp);
do while(p);
temp=substr(temp,p);
temp=substr(temp,findc(temp,' ')+1);
Buy=catx(' ',scan(temp,1,' '),scan(temp,2,' '),scan(temp,3,' '),scan(temp,4,' '));
p=prxmatch('/\b(TO BID)\b/i',temp);
end;
drop temp p;
run;
which uses an anchor word "TO BID" and brings back exactly the data I require after the anchor which is "BID FOR PPC LTD"
Do you happen to know how I can reverse this and take words before the anchor word "TO BID" ? I am wanting to obtain the text "CRH PLC TO BID"
Thanks
Chris
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Or simply:
data have; input="CRH PLC TO BID FOR PPC LTD"; after=substr(input,index(input,"TO BID")+6); before=substr(input,1,index(input,"TO BID")+5); run;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Or simply:
data have; input="CRH PLC TO BID FOR PPC LTD"; after=substr(input,index(input,"TO BID")+6); before=substr(input,1,index(input,"TO BID")+5); run;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
How far back do you want to go?
This may help:
data WANT;
STR = "CRH PLC TO BID FOR PPC LTD";
WANT = prxchange('s/(.*)\bTO BID\b.*/$1/i',1,STR);
put WANT=;
run;
WANT=CRH PLC
Also look at the prxsubstr() function.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for your reply. So if I wanted to go back and retrieve "
"CRH PLC TO BID"
and also
"BID FOR PPC LTD"
how would I tweak the code? It's a function that I have never used before. I'll need to do some reading up around the subject.
Many thanks
Chris
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
What is wrong with @RW9's solution? You never stated what the extraction criteria are.
If you have never used regular expressions, the learning curve can be steep.