La función REGEXP_MATCHES en PostgreSQL nos devuelve un conjunto de datos (aunque solo nos devuelve un valor) que coincide con el patrón de la expresión regular indicada. Esta función está englobada en las denominadas funciones de cadena.
Sintaxis
Escribe la siguiente sintaxis para utilizarlo:
REGEXP_MATCHES(cadena, patron [, indicador])
- REGEXP_MATCHES: es el nombre de la función.
- cadena: cadena a buscar.
- patrón: expresión regular.
- indicador: parámetro para indicar opciones, en la mayoría de caso de utiliza el indicador g, ya que de lo contrario solo devolvería un resultado.
Ejemplo
Búsqueda sin opciones
En el siguiente ejemplo buscamos dentro de la cadena ‘XY1234Z’ y obtenemos los números:
SELECT REGEXP_MATCHES('XY1234Z', 'Y*([0-9]{1,3})');
Búsqueda con opción global
En el siguiente ejemplo buscamos dentro de la cadena ‘Hastag #PostgreSQL #Web’ y obtenemos las palabras que van después del símbolo # siempre que contenga caracteres alfanuméricos o un guión bajo. observa como le indicamos la opción para que nos devuelva todas las que encuentre:
SELECT REGEXP_MATCHES('Hastag #PostgreSQL #Web', '#([A-Za-z0-9_]+)' , 'g');
Búsqueda con opción sensible a minúsculas
En el siguiente ejemplo buscamos dentro de la cadena ‘postgreSQL1, postgreSQL2, PostgreSQL3’. En el primer caso le indicamos la opción n (la opción c también realiza la misma función) para que sea sensible a la letra P en mayúsculas y en el segundo caso le indicamos el parámetro i para que no distinga entre mayúsculas o minúsculas:
SELECT REGEXP_MATCHES('postgreSQL1, postgreSQL2, PostgreSQL3', '([P][A-Za-z0-9_]+)' , 'n'),
REGEXP_MATCHES('postgreSQL1, postgreSQL2, PostgreSQL3', '([P][A-Za-z0-9_]+)' , 'i');