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