Referencia de funciones

REGEXP_MATCH

Equivalente en MySQL:

Devuelve un array de subcadenas de la primera coincidencia con una expresión regular.

PostgreSQL 17.9
REGEXP_MATCH(string, pattern[, flags])
  • [ ]parte opcional
string
Cadena en la que se busca
text
pattern
Expresión regular
text
flags
Indicadores, por ejemplo i para no distinguir mayúsculas y minúsculas
textOpcional
bceimnpqstwx

Valor devuelto

Array de texto (text[]) de la primera coincidencia; NULL si no hay coincidencia

Ejemplos

Partes de una fecha a partir de un texto

PostgreSQL 17.9
SELECT REGEXP_MATCH(
		'Order from 2024-03-08',
		'([0-9]{4})-([0-9]{2})-([0-9]{2})'
	);
regexp_match
["2024","03","08"]

Usuario y dominio de un email

PostgreSQL 17.9
SELECT email,
	REGEXP_MATCH(email, '^(.+)@(.+)$') AS parts
FROM Users
LIMIT 5;
emailparts
barjam@hotmail.com["barjam","hotmail.com"]
tellis@me.com["tellis","me.com"]
metzzo@superhotmail.com["metzzo","superhotmail.com"]
ralamosm@verizon.net["ralamosm","verizon.net"]
barjam@hotmail.com["barjam","hotmail.com"]

El dominio como elemento del array

PostgreSQL 17.9
SELECT email,
	(REGEXP_MATCH(email, '@(.+)$')) [1] AS domain
FROM Users
LIMIT 5;
emaildomain
barjam@hotmail.comhotmail.com
tellis@me.comme.com
metzzo@superhotmail.comsuperhotmail.com
ralamosm@verizon.netverizon.net
barjam@hotmail.comhotmail.com

Detalles

Si la expresión tiene grupos entre paréntesis, el array contiene un elemento por grupo; si no, un único elemento con toda la coincidencia. Un elemento suelto se obtiene por su número: (REGEXP_MATCH(...))[1]. El indicador g no está soportado: todas las coincidencias las devuelve REGEXP_MATCHES(..., 'g'), una fila de resultado por coincidencia. Para obtener la coincidencia como cadena y no como array, usa REGEXP_SUBSTR, que existe en PostgreSQL desde la versión 15.

Véase también