Reputation: 167
I've tried [^A-Za-z0-9]tent[^A-Za-z0-9] .. with multiple combinations of ?+*
as well as something like [^|[^A-Za-z0-9]]tent[[^A-Za-z0-9]|$]
I want to match:
if it makes it easier something like "tenting" can also be a match
I suppose I'm missing something from all the pages I've looked at, but I'm really stuck here. I need to find a search word, at the start, middle or end of a sentence or delimited list. Do I need to do multiple statements?
I was hoping there might be a way to say use this expression but not if it's the start of the line or the end of the line
Upvotes: 0
Views: 120
Reputation: 21993
with \w
(non alpha numeric)
SQL> select str
2 from (select 'attention' str from dual union all
3 select 'look at the tent' str from dual union all
4 select 'tent''s are nice' str from dual union all
5 select 'something tent something' str from dual union all
6 select 'camping,tent,outdoors' str from dual)
7 where REGEXP_LIKE(str, '(\W|^)tent(\W|$)', 'i') ;
STR
------------------------
look at the tent
tent's are nice
something tent something
camping,tent,outdoors
SQL> select str,
2 case when REGEXP_LIKE(str, '(\W|^)tent(\W|$)', 'i') then 'YES' else 'NO' end matches
3 from (select 'attention' str from dual union all
4 select 'look at the tent' str from dual union all
5 select 'tent''s are nice' str from dual union all
6 select 'something tent something' str from dual union all
7 select 'tent' str from dual union all
8 select 'camping,tent,outdoors' str from dual);
STR MAT
------------------------ ---
attention NO
look at the tent YES
tent's are nice YES
something tent something YES
tent YES
camping,tent,outdoors YES
Upvotes: 3