Saltar al contenido

Oracle REGEXP_LIKE y límites de palabras

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *