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.