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

Regex101 बनाम Oracle Regex

यह समस्या उन सभी लोगों के लिए जानी जाती है जिन्होंने हेनरी स्पेंसर के रेगेक्स लाइब्रेरी कार्यान्वयन के साथ काम किया:आलसी क्वांटिफ़ायर को एक और एक ही शाखा में लालची क्वांटिफ़ायर के साथ नहीं मिलाया जाना चाहिए क्योंकि इससे अपरिभाषित व्यवहार होता है। आर में प्रयुक्त टीआरई रेगेक्स इंजन वही व्यवहार दिखाता है। हालांकि आप आलसी और लालची क्वांटिफायर को कुछ हद तक मिला सकते हैं, आपको हमेशा यह सुनिश्चित करना चाहिए कि आपको एक सुसंगत परिणाम मिले।

समाधान केवल कैप्चरिंग समूह के अंदर आलसी क्वांटिफ़ायर का उपयोग करना है:

select REGEXP_REPLACE('+000099,8420000', '^\+?(-?)0*([0-9]+?,[0-9]+?)0*$','\1\2') as Result from dual

ऑनलाइन डेमो देखें

[0-9]+?,[0-9]+? भाग 1 या अधिक अंकों से मेल खाता है लेकिन जितनी बार संभव हो अल्पविराम के साथ और फिर 1 या अधिक अंक, जितना संभव हो उतना कम।

कुछ और परीक्षण (select REGEXP_REPLACE('+00009,010020','[0-9]+,[0-9]+?([1-9])','\1') from dual कोड> उपज +20 ) साबित करें कि एक समूह में पहला क्वांटिफायर क्वांटिफायर लालची प्रकार सेट करता है . ऊपर के मामले में, समूह 0 क्वांटिफायर लालची लालची . पर सेट है पहले ? . द्वारा क्वांटिफायर, और समूह 1 (यानी ([0-9]+?,[0-9]+?) ) लालच का प्रकार पहले +? . के साथ सेट किया गया है (जो आलसी है)।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle फ़ंक्शन में सेट किए गए डायनामिक परिणाम को कैसे लौटाएं?

  2. सभी उपयोगकर्ताओं को लौटाएं, यहां तक ​​कि वे भी जो मेरे मानदंडों के अनुरूप नहीं हैं

  3. Oracle डेटा एक्सेस FileNotFound:Oracle.DataAccess.Common.Configuration.Section.xsd

  4. मैं Oracle में एक तालिका से दूसरी तालिका में विभाजन कैसे आयात कर सकता हूं?

  5. गैर-एसक्यूएल प्रकार के साथ तत्काल निष्पादित करें