PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgresql regexp_matches-Syntax funktioniert nicht wie erwartet

Der regexp_matches(string text, pattern text [, flags text]) Funktion gibt die erfassten Werte zurück:

Sie können den Ausdruck korrigieren, indem Sie nicht erfassende Gruppen verwenden:

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

Sehen Sie sich die Online-Demo an .

Übrigens müssen Sie - nicht maskieren wenn es am Anfang/Ende des Klammerausdrucks steht, und es besteht keine Notwendigkeit, weder / zu maskieren noch . dort. Ich schlage auch vor, {1} zu entfernen als a =a{1} in jeder Regex, die begrenzende Quantifizierer unterstützt.