आप पैटर्न मिलान का उपयोग कर सकते हैं Postgres में कार्य करता है।
पहले एक पैटर्न का पता लगाएं चौथे >
. तक सब कुछ कैप्चर करने के लिए चरित्र।
अपना पैटर्न शुरू करने के लिए आपको एक उप-समूह बनाना चाहिए जो गैर >
. को कैप्चर करता है अक्षर, और एक >
चरित्र:
([^>]*>)
फिर >
. के चौथे इंस्टेंस पर पहुंचने के लिए उस चार बार कैप्चर करें
([^>]*>){4}
फिर, आपको इसे एक समूह में लपेटना होगा ताकि मैच सभी चार उदाहरणों को वापस लाए:
(([^>]*>){4})
और यह सुनिश्चित करने के लिए अच्छे माप के लिए स्ट्रिंग प्रतीक की शुरुआत करें कि यह केवल स्ट्रिंग की शुरुआत से मेल खाता है (बीच में नहीं):
^(([^>]*>){4})
यहां इसका कार्यशील regex101 उदाहरण दिया गया है!
एक बार आपके पास पैटर्न है जो पहले समूह तत्व (जिसे आप दाएं तरफ पैनल पर ऑनलाइन रेगेक्स पर बता सकते हैं) में जो चाहते हैं उसे वापस कर देंगे, तो आपको इसे SQL में वापस चुनना होगा।
Postgres में, सबस्ट्रिंग फ़ंक्शन सबस्ट्रिंग में 'से' कथन का उपयोग करके इनपुट से टेक्स्ट निकालने के लिए रेगेक्स पैटर्न का उपयोग करने का विकल्प होता है।
समाप्त करने के लिए, यह सब एक साथ रखें!
select substring(filter_type from '^(([^>]*>){4})')
from filter_table
एक कार्यशील sqlfiddle यहां देखें
यदि आप >
. के चार से कम इंस्टेंस होने पर पूरी स्ट्रिंग का मिलान करना चाहते हैं , इस रेगुलर एक्सप्रेशन का उपयोग करें:
^(([^>]*>){4}|.*)