PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

A sintaxe regexp_matches do Postgresql não está funcionando conforme o esperado


O regexp_matches(string text, pattern text [, flags text]) A função retorna os valores capturados:

Você pode corrigir a expressão usando grupos sem captura:
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'));

Veja a demonstração on-line .



BTW, você não precisa escapar - quando está no início/fim da expressão de colchetes, e não há necessidade de escapar nem / nem . lá. Também sugiro remover {1} como a =a{1} em qualquer regex que suporte quantificadores limitantes.