Solución:
Creo que quieres probar
select 1 from dual
where regexp_like ('does test work here', '(^|s)test(s|$)');
porque el b
no aparece en esta lista: D.3 Extensiones influenciadas por Perl en expresiones regulares de Oracle
los s
se asegura de que la prueba comience y termine en un espacio en blanco. Sin embargo, esto no es suficiente, ya que la cadena test
también podría aparecer al principio o al final de la cadena que se está haciendo coincidir. Por lo tanto, utilizo el alternativa (indicado por el |
) ^
para el inicio de la cadena y $
para el final de la cuerda.
Actualización (después de 3 años +) …
Da la casualidad de que necesitaba esta funcionalidad hoy, y me parece que aún mejor una expresión regular es (^|W)test($|W)
(El carácter especial de expresión regular b que falta en Oracle).
La expresión regular más corta que puede buscar una palabra completa en Oracle es
(^|W)test($|W)
Vea la demostración de expresiones regulares.
Detalles
-
(^|W)
– un grupo de captura que coincida con-
^
– inicio de cadena -
|
– o -
W
– un char sin palabras
-
-
test
– una palabra -
($|W)
– un grupo de captura que coincida con-
$
– fin de cuerda -
|
– o -
W
– un char sin palabras.
-
Tenga en cuenta que W
coincide con cualquier carácter excepto letras, dígitos y _
. Si desea hacer coincidir una palabra que puede aparecer entre _
(guiones bajos), necesita un patrón un poco diferente:
(^|[^[:alnum:]])test($|[^[:alnum:]])
los [^[:alnum:]]
La expresión de corchete negado coincide con cualquier carácter excepto los caracteres alfanuméricos, y coincide _
, asi que, _test_
coincidirá con este patrón.
Vea esta demostración de expresiones regulares.