La función REGEXP_SUBSTR en Oracle es una extensión de la función SUBSTR. Esta función, introducida en Oracle 10g, le permitirá extraer una subcadena de una cadena utilizando la coincidencia de patrones de expresión regular.
Tabla de Contenidos
ocultar
Sintaxis
Escribe la siguiente sintaxis para utilizarlo:
REGEXP_SUBSTR ( cadena, patrón_de_busqueda [, cadena_remplazo [, inicio_posición [, n_ocurrencia [, parametro_coincidencia [, sub_expresion ] ] ] ] )
- REGEXP_SUBSTR: nombre de la función.
- cadena: es la cadena de entrada para buscar el patrón.
- patrón_de_busqueda: es una expresión regular. Puede ser una o la combinación de las siguientes expresiones:
Valor | Descripción |
---|---|
^ | Coincide con el comienzo de una cadena. Si se utiliza con un parámetro de coincidencia de ‘m’, coincide con el inicio de una línea en cualquier lugar dentro de la expresión. |
$ | Coincide con el final de una cuerda. Si se utiliza con un parámetro match_parameter de ‘m’, coincide con el final de una línea en cualquier lugar dentro de la expresión. |
* | Coincide con cero o más ocurrencias. |
+ | Coincide con una o más ocurrencias. |
? | Coincide con cero o una ocurrencia. |
. | Coincide con cualquier carácter excepto NULL. |
| | Se utiliza como un “OR” para especificar más de una alternativa. |
[ ] | Se utiliza para especificar una lista coincidente en la que intentas hacer coincidir cualquiera de los caracteres de la lista. |
[^ ] | Se utiliza para especificar una lista no coincidente en la que intentas coincidir cualquier carácter, excepto los de la lista. |
( ) | Se utiliza para agrupar expresiones como una subexpresión. |
{m} | Coincide con m veces. |
{m,} | Coincide al menos m veces. |
{m,n} | Coincide al menos m veces, pero no más de n veces. |
\n | N es un número entre 1 y 9. Coincide con la enésima subexpresión encontrada dentro de ( ) antes de encontrar \n. |
[..] | Coincide con un elemento de intercalación que puede tener más de un carácter. |
[::] | Partidos de clases de personajes. |
[==] | Clases de equivalencia de partidos. |
\d | Coincide con un carácter de dígito. |
\D | Coincide con un carácter sin dígito. |
\w | Coincide con un carácter de palabra. |
\W | Coincide con un carácter que no sea una palabra. |
\s | Coincide con un carácter de espacio en blanco. |
\S | Coincide con un carácter que no sea espacio en blanco. |
\A | Coincide con el comienzo de una cadena o coincide al final de una cadena antes de un carácter de nueva línea. |
\Z | Coincidencias al final de una cuerda. |
*? | Coincide con el patrón anterior cero o más ocurrencias. |
+? | Coincide con el patrón anterior con una o más ocurrencias. |
?? | Coincide con el patrón anterior cero o una ocurrencia. |
{n}? | Coincide con el patrón anterior n veces. |
{n,}? | Coincide con el patrón anterior al menos n veces. |
{n,m}? | Coincide con el patrón anterior al menos n veces, pero no más de m veces. |
- cadena_remplazo: opcional. Los patrones coincidentes se reemplazarán con la cadena_remplazo en la cadena. Si se omite el parámetro cadena_remplazo, la función simplemente elimina todos los patrones coincidentes y devuelve la cadena resultante.
- inicio_posición: opcional. Es la posición en la cadena donde comenzará la búsqueda. Si se omite, el valor predeterminado es 1, que es la primera posición en la cadena.
- n_ocurrencia: opcional. Es la enésima aparición del patrón en la cuerda. Si se omite, el valor predeterminado es 1, que es la primera aparición de patrón en la cadena. Si especifica 0 para este parámetro, todas las apariencias del patrón se reemplazarán en cadena.
- parametro_coincidencia: opcional. Le permite modificar el comportamiento de coincidencia para la función REGEXP_INSTR. Puede ser una combinación de lo siguiente:
Valor | Descripción |
---|---|
‘c’ | Realiza una coincidencia que distingue entre mayúsculas y minúsculas. |
‘i’ | Realiza una coincidencia sin mayúsculas y minúsculas. |
‘n’ | Permite que el punto (.), que es el carácter que coincide con cualquier carácter, coincida con el carácter de nueva línea. Si omite este parámetro, entonces el punto (.) no coincide con el carácter de la nueva línea. |
‘m’ | La función trata la cadena como varias líneas. La función interpreta el signo de dólar (^) y el signo de dólar ($) como el principio y el final, respectivamente, de cualquier línea en cualquier lugar de la cadena, en lugar de solo al principio o al final de toda la cadena. Si omite este parámetro, la función trata la cadena de origen como una sola línea. |
‘x’ | Ignora los caracteres de espacio en blanco. De forma predeterminada, los caracteres de espacio en blanco coinciden entre sí mismos. |
- sub_expresion: opcional. Esto se utiliza cuando el patrón tiene subexpresiones y desea indicar qué subexpresión en el patrón es el objetivo. Es un valor entero de 0 a 9 que indica la subexpresión que corresponderá en el patrón.
Ejemplos
En el siguiente ejemplo utilizamos la función regex_substr para extraer la primera palabra de la cadena.
SELECT REGEXP_SUBSTR ('En MiguelTroyano.com hay cientos de articulos','(\S*)(\s)') RESULTADO FROM dual;
En este otro ejemplo utilizamos la función regex_substr para quedarnos con la segunda palabra de la cadena.
SELECT REGEXP_SUBSTR ('En MiguelTroyano.com hay cientos de articulos', '(\S*)(\s)', 1, 2) RESULTADO FROM dual;