sql >> Base de Datos >  >> RDS >> PostgreSQL

La sintaxis de Postgresql regexp_matches no funciona como se esperaba

El regexp_matches(string text, pattern text [, flags text]) la función devuelve los valores capturados:

Puede corregir la expresión usando grupos que no capturan:

SELECT unnest(regexp_matches('4-0001-1234 4.0001.12344  4-0-0-0-1-1234', '4(?:[\s/.-]*0){3}(?:[\s/.-]*[12])(?:[\s/.-]*\d){4}', 'g'));

Vea la demostración en línea .

Por cierto, no necesitas escapar - cuando está al principio/final de la expresión de paréntesis, y no hay necesidad de escapar ni / ni . allá. También sugiero eliminar {1} como a =a{1} en cualquier expresión regular que admita cuantificadores limitantes.