PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Postgresql:Biểu thức chính quy không hợp lệ:số phản hồi không hợp lệ

Vấn đề với Postgresql là trước tiên, nó không hỗ trợ có các nhóm nắm bắt trong các xác nhận trên lookahead của nó. Điều đó nói rằng, tất cả các nhóm chụp trong một lookahead sẽ được coi là nhóm không chụp ((?: ... ) ), nhấn mạnh của tôi:

Vì vậy, ngay cả khi PostgreSQL đã hỗ trợ có backreferences trong lookahead, nó vẫn sẽ không hoạt động như mong đợi do ràng buộc trên (nếu không có nhóm capture, bạn không thể có backreference).

Một giải pháp khả thi (rất tiếc sẽ dài dòng đối với các yêu cầu phức tạp) là đếm số lượng của mỗi ký tự:

WHERE
    LENGTH(REGEXP_REPLACE(name, '[^a]+', '', 'g')) < 2 AND
    LENGTH(REGEXP_REPLACE(name, '[^c]+', '', 'g')) < 2 AND
    LENGTH(REGEXP_REPLACE(name, '[^e]+', '', 'g')) < 2 AND
    LENGTH(REGEXP_REPLACE(name, '[^g]+', '', 'g')) < 2 AND
    LENGTH(REGEXP_REPLACE(name, '[^i]+', '', 'g')) < 3 AND
    LENGTH(REGEXP_REPLACE(name, '[acegi]+', '', 'g')) = 0;

[điều kiện được thực hiện và sửa đổi từ câu trả lời này ; hàng cuối cùng để đảm bảo chỉ có những ký tự đó trong chuỗi]



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ngày hội nhà phát triển PostgreSQL ở Praha 2016

  2. SQLAlchemy, Decl Compare, PostgreSQL:không thể tạo bảng

  3. Cách chạy Jasmine trước Tất cả cho tất cả các tệp thử nghiệm

  4. Làm thế nào để trả về một giá trị từ một thủ tục được lưu trữ (không phải hàm)?

  5. Làm cách nào để truy vấn một chuỗi từ JSON dựa trên một chuỗi khác trong JSON trong PostgreSQL?