PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

Postgresql:अमान्य रेगुलर एक्सप्रेशन:अमान्य बैकरेफ़रेंस संख्या

Postgresql के साथ समस्या यह है कि सबसे पहले, यह अपने लुकहेड दावों के भीतर समूहों को पकड़ने का समर्थन नहीं करता है। उस ने कहा, एक लुकहेड के भीतर सभी कैप्चर समूहों को गैर-कैप्चर समूहों के रूप में माना जाएगा ((?: ... ) ), जोर मेरा:

इसलिए भले ही पोस्टग्रेएसक्यूएल ने लुकहेड के भीतर बैकरेफरेंस का समर्थन किया हो, फिर भी यह उपरोक्त बाधा के कारण अपेक्षित रूप से काम करने में विफल रहेगा (कैप्चर समूह के बिना, आपके पास बैकरेफर नहीं हो सकता है)।

एक संभावित समाधान (दुर्भाग्य से जटिल आवश्यकताओं के लिए लंबा होगा) प्रत्येक वर्ण की संख्या की गणना करना होगा:

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;

[स्थिति ली गई और संशोधित की गई इस उत्तर से; अंतिम पंक्ति यह सुनिश्चित करने के लिए है कि स्ट्रिंग में केवल वे वर्ण हैं]



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Psycopg2 स्थापित करने में त्रुटि ==2.6.2

  2. Postgresql यूजर पासवर्ड जनरेट कर रहा है

  3. PostgreSQL psycopg2 टुपल्स के टपल के बजाय स्ट्रिंग्स का एक टपल लौटाता है?

  4. दो असंबंधित तालिकाओं में एक एसयूएम कैसे करें?

  5. क्या PostgreSQL में कोई हैश फ़ंक्शन है?