I am having a problem with matching word boundaries with REGEXP_LIKE. The following query returns a single row, as expected.
select 1 from dual
where regexp_like('DOES TEST WORK HERE','TEST');
But I want to match on word boundaries as well. So, adding the “\b” characters gives this query
select 1 from dual
where regexp_like('DOES TEST WORK HERE','\bTEST\b');
Running this returns zero rows. Any ideas?
I believe you want to try
because the
\bdoes not appear on this list: Perl-influenced Extensions in Oracle Regular ExpressionsThe
\smakes sure that test starts and ends in a whitespace. This is not sufficient, however, since the stringtestcould also appear at the very start or end of the string being matched. Therefore, I use the alternative (indicated by the|)^for start of string and$for end of string.Update (after 3 years+)…
As it happens, I needed this functionality today, and it appears to me, that even better a regular expression is
(^|\s|\W)test($|\s|\W)(The missing \b regular expression special character in Oracle).