PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Składnia Postgresql regexp_matches nie działa zgodnie z oczekiwaniami

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Indeks nie jest używany, gdy w postgresie jest używane LIMIT

  2. Zaktualizuj wartość klucza w tablicy obiektów jsonb

  3. Czy ktoś może wyjaśnić, w jaki sposób role Postgresql, użytkownicy Postgresql i użytkownicy Linuksa odnoszą się do siebie?

  4. BŁĄD:funkcje w wyrażeniu indeksu muszą być oznaczone jako IMMUTABLE w Postgresie

  5. Jak usunąć duplikaty w tabeli?