Is there a way to use lookbehind for a few possible letters as a whole? In the example below, I need ABC, DEF, GHI be found as a whole (ABCDE is ok), but seems like it was taken as each letter. I tried (ABC|DEF|GHI), it’s not working, one word is working. Any suggestions?
data a;
var='ABC 1.89 DEF A YELLOW LINES'; output;
var='ABC 1.89 YELLOW JKLM LINE'; output;
var='9 GHI YELLOW LINE'; output;
var='9 H BLK LINE'; output;
var='9 BC JT GREEN LINE'; output;
run;
data b;
set a;
retain re1;
if _N_=1 then do;
re1 = prxparse('/(?<=[ABC|DEF|GHI] )(YELLOW|BLK|GREEN)(?=\s*LI)/');
end;
if prxmatch(re1,var) then do;
var2 = prxposn(re1,0,var);
end;
run;
proc print data=b; run;
1 | ABC 1.89 DEF A YELLOW LINES | 1 | YELLOW |
2 | ABC 1.89 YELLOW JKLM LINE | 1 |
|
3 | 9 GHI YELLOW LINE | 1 | YELLOW |
4 | 9 H BLK LINE | 1 | BLK |
5 | 9 BC JT GREEN LINE | 1 |
|
I think you need () instead of []
prxparse('/(?<=(ABC|DEF|GHI) )(YELLOW|BLK|GREEN)(?=\s*LI)/')
Please provide details on what you mean by "not working"? What was your expected output?
For example if I have “re1 = prxparse('/(?<=ABC).*(\bYELLOW|BLK|GREEN\b)(?=\s*LI)/');” in code, so ‘YELLOW’ in “ABC 1.89 DEF A YELLOW LINES” will be captured, but I need to list more possible words, like GHI, so YELLOW in “9 GHI YELLOW LINE”’ can be captured too.
I think you need () instead of []
prxparse('/(?<=(ABC|DEF|GHI) )(YELLOW|BLK|GREEN)(?=\s*LI)/')
gergely! you are right. I thought I tried that, got error earlier, I must have added an extra closed parenthesis. Thank you!
Hi, is there a way to look around, either ahead or behind, for example, as long as ABC or GHI is in the string, before or after (\bYELLOW|BLK|GREEN\b) return the color?
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.