La coincidencia de expresiones regulares funciona en el comprobador de expresiones regulares pero no en Oracle.
Tengo la expresión regular \bname[^a-zA-Z]+[0-9]+
. Esta expresión regular funciona en https://regexr.com/ pero no funciona en Oracle. El patrón al que quiero llegar es:
<exact word "name" (mayúsculas o minúsculas)><cualquier caracter que no sea una letra (incluidos saltos de línea) o puede no haber caracteres><un número entero>
Aquí está mi muestra de prueba:
name8213
name:1232
name: 234
name
1231
name:
985
name:, 123
-- No debería coincidir con ninguno de los siguientes textos
nameis1233
name is 123
ornaments are cool 360
nickname 1323
name 1234 1233 (no debe coincidir con el segundo conjunto de números)
Sin embargo, cuando ejecuto:
SELECT REGEXP_SUBSTR('name 123', '\bname[^a-zA-Z]+[0-9]+', 1, 1, 'i') FROM DUAL
No obtengo nada. Mi objetivo final es extraer ese número entero completo.
davy.ai
El problema con el regex
\bname[^a-zA-Z]+[0-9]+
que no funciona en Oracle podría ser debido a la sintaxis regex diferente utilizada en Oracle en comparación con otros lenguajes de programación.Para solucionar el problema y lograr el patrón deseado de extraer el número completo después de la palabra exacta “name”, se podría utilizar el siguiente regex en Oracle:
Este regex utiliza un enfoque diferente donde coincide con la palabra exacta “name”, seguida de cualquier carácter no alfanumérico y luego captura los dígitos que siguen. Los dígitos capturados luego se extraen utilizando el sexto parámetro, que especifica la subexpresión a devolver.
Este regex debería coincidir con las entradas de muestra proporcionadas y extraer el número completo con éxito.