regexp_like pattern only not examples example ejemplos regex oracle word-boundary

pattern - regexp_like oracle example digit



Oracle REGEXP_LIKE y lĂ­mites de palabras (2)

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: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm#i1007670

El /s se asegura de que la prueba se inicie y termine en un espacio en blanco. Sin embargo, esto no es suficiente, ya que la test cadena también podría aparecer al principio o al final de la cadena que se está emparejando. Por lo tanto, uso la alternativa (indicada por | ) ^ para el inicio de la cadena y $ para el final de la cadena.

Actualización (después de 3 años +) ... Da la casualidad que necesitaba esta funcionalidad hoy, y me parece que, incluso mejor, una expresión regular es (^|/s|/W)test($|/s|/W) ( El carácter especial faltante / b expresión regular en Oracle ).

Tengo un problema para unir límites de trabajo con REGEXP_LIKE. La siguiente consulta devuelve una sola fila, como se esperaba.

select 1 from dual where regexp_like(''DOES TEST WORK HERE'',''TEST'');

Pero también quiero hacer coincidir los límites de las palabras. Entonces, agregar los caracteres "/ b" da esta consulta

select 1 from dual where regexp_like(''DOES TEST WORK HERE'',''/bTEST/b'');

Ejecutando esto, devuelve cero filas. ¿Algunas ideas?


En general, me quedaré con la solución de René, la excepción es cuando necesitas que el partido sea de longitud cero. es decir, no desea capturar realmente el carácter no verbal al principio / final.

Por ejemplo, si nuestra cadena es test test , (/b)test(/b) coincidirá dos veces, pero la (/b)test(/b) (^|/s|/W)test($|/s|/W) solo coincidirá con la primera ocurrencia. Al menos, ese es ciertamente el caso si intentas usar regexp_substr.

Ejemplo

SELECT regexp_substr(''test test'', ''(^|/s|/W)test($|/s|/W)'', 1, 1, ''i''), regexp_substr(''test test'', ''(^|/s|/W)test($|/s|/W)'', 1, 2, ''i'') FROM dual;

Devoluciones

test |NULL