regexp_matches(string text, pattern text [, flags text])
funkcja zwraca przechwycone wartości:
Możesz poprawić wyrażenie za pomocą grup nieprzechwytujących:
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'));
Zobacz demo internetowe .
BTW, nie musisz uciekać -
gdy znajduje się na początku/końcu wyrażenia w nawiasie i nie ma potrzeby ucieczki ani /
ani .
tam. Proponuję również usunąć {1}
jako a
=a{1}
w dowolnym wyrażeniu regularnym obsługującym kwantyfikatory ograniczające.