Referencia de funciones

REGEXP_REPLACE

Sustituye las subcadenas que coinciden con una expresión regular por la cadena indicada.

PostgreSQL 17.9
REGEXP_REPLACE(source, pattern, replacement[, start[, occurrence]][, flags])
  • [ ]parte opcional
source
Cadena de origen
text
pattern
Expresión regular
text
replacement
Cadena que se pone en lugar de la coincidencia
text
start
Posición desde la que se busca, 1 por defecto
integerOpcional
occurrence
Número de la coincidencia que se sustituye, 0 para todas; por defecto, la primera
integerOpcional
flags
Indicadores, por ejemplo 'gi' para todas las coincidencias sin distinguir mayúsculas y minúsculas
textOpcional
bcegimnpqstwx

Valor devuelto

Cadena con la sustitución; sin el indicador g y sin occurrence solo se sustituye la primera coincidencia

Ejemplos

Sustitución con y sin el indicador g

PostgreSQL 17.9
SELECT REGEXP_REPLACE('sql-academy-2024', '[0-9]', '*') AS first_only,
	REGEXP_REPLACE('sql-academy-2024', '[0-9]', '*', 'g') AS all_matches;
first_onlyall_matches
sql-academy-*024sql-academy-****

Sustituir solo el segundo número

PostgreSQL 17.9
SELECT REGEXP_REPLACE('a1b22c333', '[0-9]+', '*', 1, 2);
regexp_replace
a1b*c333

Reordenar las partes de una fecha

PostgreSQL 17.9
SELECT REGEXP_REPLACE(
		'2024-03-08',
		'([0-9]{4})-([0-9]{2})-([0-9]{2})',
		'\3.\2.\1'
	);
regexp_replace
08.03.2024

Espacios de los nombres a guiones bajos

PostgreSQL 17.9
SELECT good_name,
	REGEXP_REPLACE(good_name, ' ', '_', 'g') AS slug
FROM Goods
LIMIT 5;
good_nameslug
apartment feeapartment_fee
phone feephone_fee
breadbread
milkmilk
red caviarred_caviar

Detalles

En replacement puedes insertar una parte de la coincidencia entre paréntesis: \1 es el primer grupo, \2 el segundo y \& toda la coincidencia. Sin el indicador g solo se sustituye la primera coincidencia. En MySQL se sustituyen todas por defecto, y un grupo se escribe en la sustitución como $1.

Véase también