Oracle/PLSQL: función REGEXP_REPLACE

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Oracle/PLSQL: función REGEXP_REPLACE

Este tutorial de Oracle explica cómo usar Oracle/PLSQL Función REGEXP_REPLACE Con sintaxis y ejemplos.

describir

La función Oracle/PLSQL REGEXP_REPLACE es una extensión de la función REPLACE. Esta función, introducida en Oracle 10g, le permitirá utilizar la coincidencia de patrones de expresiones regulares para reemplazar una secuencia de caracteres en una cadena con otro conjunto de caracteres.

sintaxis

La sintaxis de la función REGEXP_REPLACE en Oracle es:

REGEXP_REPLACE( string, pattern [, replacement_string [, start_position [, nth_appearance [, match_parameter ] ] ] ] )

parámetro o parámetro

cadena La cadena a buscar. Puede ser CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB o NCLOB.patrón

Información de coincidencia de expresiones regulares. Puede ser una combinación de lo siguiente:

valor describir
^ Coincide con el principio de la cadena. Si se usa con el parámetro de coincidencia de ‘m’, coincide con el comienzo de una línea en cualquier parte de la expresión.
PS Coincide con el final de la cadena. Si se usa con el parámetro de coincidencia de ‘m’, coincidirá con el final de la línea en cualquier parte de la expresión.
* Coincide con cero o más ocurrencias.
+ Coincide con una o más coincidencias.
? Partido cero o una vez.
. Coincide con cualquier carácter excepto NULL.
| Use como “O” para especificar múltiples alternativas.
[ ] Se utiliza para especificar una lista de coincidencias en la que intenta hacer coincidir cualquiera de los caracteres de la lista.
[^ ] Se utiliza para especificar una lista no coincidente en la que está intentando hacer coincidir cualquier carácter excepto los de la lista.
( ) Se utiliza para agrupar expresiones en subexpresiones.
{arroz} Coincidir m veces.
{arroz,} Coincide al menos m veces.
{Minnesota} Coincide al menos m veces, pero no más de n veces.
norte n es un número entre 1 y 9. Coincide con la n-ésima subexpresión encontrada en ( ) antes de que se encuentre n.
[..] Coincide con un elemento de intercalación que puede tener más de un carácter.
[::] Coincide con las clases de personajes.
[==] Igualar clases de equivalencia.
D Coincide con un carácter numérico.
D Coincide con caracteres no numéricos.
w Coincide con un carácter de palabra.
W Coincide con caracteres que no son palabras.
s Coincide con un carácter de espacio en blanco.
S Coincide con caracteres que no son espacios en blanco.
Una Coincide con el principio de la cadena o antes de la nueva línea al final de la cadena coincidente.
Z Coincide con el final de la cadena.
*? Coincide con cero o más ocurrencias del patrón anterior.
+? Coincide con una o más apariciones del patrón anterior.
?? Coincide con cero o una aparición del patrón anterior.
{norte}? Coincide con el patrón anterior n veces.
{norte,}? Coincide con el patrón anterior al menos n veces.
{Nuevo Méjico}? Haga coincidir el patrón anterior al menos n veces, pero no más de m veces.

La cadena de reemplazo es opcional. El patrón coincidente se reemplazará con la cadena de reemplazo en la cadena. Si se omite el parámetro replace_string, la función simplemente elimina todos los patrones coincidentes y devuelve la cadena resultante. start_position es opcional. Es la posición en la cadena donde comienza la búsqueda. Si se omite, el valor predeterminado es 1, la primera posición en la cadena. nth_appearance Opcional. Esta es la enésima aparición del patrón en la cadena. Si se omite, el valor predeterminado es 1, que es la primera aparición del patrón en la cadena. Si este parámetro se especifica como 0, todas las apariciones del patrón se reemplazarán con cadenas.parámetro de coincidencia

Electivo. Le permite modificar el comportamiento de coincidencia de la función REGEXP_REPLACE. Puede ser una combinación de lo siguiente:

valor describir
‘C’ Realice coincidencias con distinción entre mayúsculas y minúsculas.
‘Una generación’ Realice una coincidencia que no distinga entre mayúsculas y minúsculas.
‘norte’ Permite que el carácter de punto (.) coincida con una nueva línea. De forma predeterminada, los puntos son comodines.
‘I’ Se supone que una expresión tiene varias líneas, donde ^ es el comienzo de una línea y $ es el final de una línea, independientemente de la posición de estos caracteres en la expresión. De forma predeterminada, se supone que las expresiones son de una sola línea.
‘X’ Los caracteres de espacio en blanco se ignoran. De forma predeterminada, los caracteres de espacio en blanco coinciden como cualquier otro carácter.

devolver los bienes

La función REGEXP_REPLACE devuelve un valor de cadena.

notas

  • Si se proporcionan valores en conflicto para match_parameter, la función REGEXP_REPLACE utilizará el último valor.
  • Consulte también la función REEMPLAZAR.

aplicar para

La función REGEXP_REPLACE está disponible en las siguientes versiones de Oracle/PLSQL:

  • Oráculo 12c, Oráculo 11g, Oráculo 10g

Ejemplo: coincidencia de la primera palabra

Comencemos reemplazando la primera palabra en la cadena usando la función REGEXP_REPLACE.

Por ejemplo:

SELECT REGEXP_REPLACE ('TechOnTheNet is a great resource', '^(S*)', 'CheckYourMath')
FROM dual;

Result: 'CheckYourMath is a great resource'

Este ejemplo devolverá “CheckYourMath es un gran recurso” porque comenzará a coincidir al principio de la cadena como ^ luego encuentra la primera palabra especificada (S*)La función reemplazará la primera palabra con “CheckYourMath”.

Ejemplo: coincidencia de caracteres numéricos

A continuación, veamos cómo usar la función REGEXP_REPLACE para hacer coincidir un patrón de caracteres de un solo dígito.

Por ejemplo:

SELECT REGEXP_REPLACE ('2, 5, and 10 are numbers in this example', 'd', '#')
FROM dual;

Result: '#, #, and ## are numbers in this example'

Este ejemplo reemplazará todos los números especificados en la cadena dReemplazará las ocurrencias con el carácter #.

Podemos cambiar nuestro patrón para buscar solo dos dígitos.

Por ejemplo:

SELECT REGEXP_REPLACE ('2, 5, and 10 are numbers in this example', '(d)(d)', '#')
FROM dual;

Result: '2, 5, and # are numbers in this example'

Este ejemplo reemplazará un número con dos números uno al lado del otro como (d)(d)En este caso, salta los valores 2 y 5 y reemplaza el 10 por el carácter #.

Ahora, veamos cómo usar la función REGEXP_REPLACE con una columna de tabla para reemplazar dos dígitos.

Por ejemplo:

SELECT REGEXP_REPLACE (address, '(d)(d)', 'TBD')
FROM contacts;

En este ejemplo, reemplazaremos todos los números de dos dígitos en el campo de dirección en la tabla de Contactos con el valor “TBD”.

Ejemplo: coincidencia de múltiples alternativas

El siguiente ejemplo que veremos involucra el uso | patrón.Esta | Los patrones se utilizan como “o” para especificar múltiples alternativas.

Por ejemplo:

SELECT REGEXP_REPLACE ('Anderson', 'a|e|i|o|u', 'G')
FROM dual;

Result: 'AndGrsGn'

Este ejemplo devolverá “AndGrsGn” porque está buscando la primera vocal (a, e, i, o o u) en la cadena. Dado que no especificamos un valor de parámetro de coincidencia, la función REGEXP_REPLACE realizará una búsqueda que distingue entre mayúsculas y minúsculas, lo que significa que la ‘A’ en ‘Anderson’ no coincidirá.

Podemos modificar nuestra consulta para realizar una búsqueda que no distinga entre mayúsculas y minúsculas de la siguiente manera:

SELECT REGEXP_REPLACE ('Anderson', 'a|e|i|o|u', 'G', 1, 0, 'i')
FROM dual;

Result: 'GndGrsGn'

Ahora, debido a que proporcionamos un parámetro de coincidencia de “i”, la consulta reemplazará la “A” en la cadena. Esta vez, la “A” en “Anderson” se encontrará como una coincidencia. También tenga en cuenta que especificamos 0 como el quinto parámetro para reemplazar todas las coincidencias.

Ahora, mostremos rápidamente cómo usar esta función con columnas.

Supongamos que tenemos una tabla de contactos con los siguientes datos:

Identificación de contacto apellido
1000 anderson
2000 Herrero
3000 Johnson

Ahora, ejecutemos la siguiente consulta:

SELECT contact_id, last_name, REGEXP_REPLACE (last_name, 'a|e|i|o|u', 'G', 1, 0, 'i') AS "New Name"
FROM contacts;

Estos son los resultados que devolverá la consulta:

Identificación de contacto apellido nuevo nombre
1000 anderson GndGrsGn
2000 Herrero destreza
3000 Johnson JGhnsGn

Ejemplo: coincidencia en nth_occurrence

El siguiente ejemplo que veremos implica el parámetro nth_occurrence. El parámetro nth_occurrence le permite seleccionar ocurrencias del patrón para reemplazar en la cadena.

primera impresión

Veamos cómo reemplazar la primera aparición de un patrón en una cadena.

Por ejemplo:

SELECT REGEXP_REPLACE ('TechOnTheNet', 'a|e|i|o|u', 'Z', 1, 1, 'i')
FROM dual;

Result: 'TZchOnTheNet'

Este ejemplo reemplazará el segundo carácter (‘e’) en ‘TechOnTheNet’ porque está reemplazando la primera aparición de una vocal (a, e, i, o o u) en la cadena.

segunda aparición

A continuación, extraeremos la segunda aparición del patrón en la cadena.

Por ejemplo:

SELECT REGEXP_REPLACE ('TechOnTheNet', 'a|e|i|o|u', 'Z', 1, 2, 'i')
FROM dual;

Result: 'TechZnTheNet'

Este ejemplo reemplazará el quinto carácter (‘O’) en ‘TechOnTheNet’ porque reemplaza la segunda aparición de una vocal (a, e, i, o o u) en la cadena.

la tercera vez

Por ejemplo:

SELECT REGEXP_REPLACE ('TechOnTheNet', 'a|e|i|o|u', 'Z', 1, 3, 'i')
FROM dual;

Result: 'TechOnThZNet'

Este ejemplo reemplazará el noveno carácter (‘e’) en ‘TechOnTheNet’ porque reemplaza la tercera aparición de una vocal (a, e, i, o o u) en la cadena.

(Visited 12 times, 1 visits today)