PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

La sintassi di Postgresql regexp_matches non funziona come previsto

Il regexp_matches(string text, pattern text [, flags text]) la funzione restituisce i valori acquisiti:

Puoi correggere l'espressione utilizzando gruppi non di acquisizione:

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'));

Guarda la demo online .

A proposito, non è necessario eseguire l'escape - quando si trova all'inizio/alla fine dell'espressione tra parentesi e non è necessario eseguire l'escape né di /. là. Suggerisco anche di rimuovere {1} come a =a{1} in qualsiasi espressione regolare che supporta quantificatori limitanti.