While I don't fully understand regular expressions, I played around with the one suggested by @PGStats and came up with the following that I think correctly handles all of the examples I proposed in my last post
data test;
length line before after $200;
input line &;
prxId = prxparse("/(([\w\']+\W+){0,4})(fruit)\W+(([\w\']+\W+){0,4})/i");
if prxmatch(prxId, line) then do;
before = prxposn(prxId, 1, line);
after = prxposn(prxId, 4, line);
end;
drop prxId;
datalines;
word1 word2 word3 word4 word5 word6 fruit word7 word8 word9 word10 word11
word1 word2's fruit word3 word4 word5 word6 word7 word8 word9 word10 word11
word1 word2 fruit word3 word4 word5 word6 word7 word8 word9 word10 word11
Some pretend that a tomato is a real fruit, others say it's a vegetable
Some say that a tomato is a fruit, I'd say it is a vegetable
Mr Afruiting told us not to eat fruit like apples, pears and oranges
;
run;
Art, CEO, AnalystFinder.com
... View more