PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Синтаксисът на Postgresql regexp_matches не работи според очакванията

regexp_matches(string text, pattern text [, flags text]) функция връща уловените стойности:

Можете да коригирате израза, като използвате групи без прихващане:

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

Вижте онлайн демонстрация .

Между другото, не е нужно да избягвате - когато е в началото/края на израза в скоби и няма нужда да се екранира нито / нито . там. Предлагам също да премахнете {1} като a =a{1} във всеки регулярен израз, поддържащ ограничаващи квантори.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres Съвпадение на всички стойности на масива с една и съща колона с и условие

  2. Postgresql join_collapse_limit и време за планиране на заявката

  3. findById() дава Не е намерен идентификатор на свойство

  4. pg_dump проблеми със сериен тип данни

  5. АКТУАЛИЗИРАНЕ на цял ред в PL/pgSQL