- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hi
I am trying to find a pattern from a sentence e.g I am trying find " I am" and "live" and "with my parents" from "I am 20 years old and I live happily with my parents".
The code I tried is ;
data test;
sentence='I am 20 years old and I live happily with my parents';
pattern=prxparse('/(I am)\w*(live)\w*(with my parents)/i');
b=prxmatch(pattern,sentence);
run:
I am getting 0 value for b
Any help in this regards will be very much appreciated.
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Your aren't incorporating the blanks between the words you want to find and all other chars in the text. The following regex seems to solve the issue:
(I am)(\w*\W)*(live)(\w*\W)*(with my parents)
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Your aren't incorporating the blanks between the words you want to find and all other chars in the text. The following regex seems to solve the issue:
(I am)(\w*\W)*(live)(\w*\W)*(with my parents)
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
It seems that the string (\w*\W)* is used to skip any number of words.
Getting result b=1 means that the sentence contains all required substrings
in the defined order.
Next code is searching each sub string, if it exists in the sentence:
data _null_;
sentence='I am 20 years old and I live happily with my parents';
prxid = prxparse('/(I am)|(live)|(my parents)/');
length unit $20;
start=1;
stop=length(sentence);
do while (1);
call prxnext(prxid,start,stop,sentence,pos,len);
if pos=0 then leave;
unit = compress(substr(sentence,pos,len));
put unit=;
end;
run;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content