Regular Expressions
जब आपको रेगुलर एक्सप्रेशन का उपयोग नहीं करना चाहिए
खोज…
टिप्पणियों
क्योंकि नियमित अभिव्यक्ति या तो एक नियमित व्याकरण या एक संदर्भ-मुक्त व्याकरण तक सीमित होती हैं, नियमित अभिव्यक्ति के कई सामान्य दुरुपयोग हैं। इसलिए इस विषय में कुछ उदाहरण हैं जब आपको नियमित अभिव्यक्ति का उपयोग नहीं करना चाहिए, लेकिन इसके बजाय अपनी पसंदीदा भाषा का उपयोग करें।
कुछ लोग, जब एक समस्या का सामना करते हैं, तो सोचते हैं:
"मुझे पता है, मैं नियमित अभिव्यक्ति का उपयोग करूँगा।"
अब उन्हें दो समस्याएं हैं।
- जेमी ज़विंस्की
मिलान जोड़े (जैसे कोष्ठक, कोष्ठक…)
कुछ रेगेक्स इंजन (जैसे .NET) संदर्भ-मुक्त अभिव्यक्तियों को संभाल सकते हैं, और इसे काम करेंगे। लेकिन अधिकांश मानक इंजनों के लिए ऐसा नहीं है। और अगर वे ऐसा करते हैं, तो आप एक जटिल हार्ड-टू-रीड अभिव्यक्ति को समाप्त कर देंगे, जबकि एक पार्सिंग लाइब्रेरी का उपयोग करने से काम आसान हो सकता है।
सरल स्ट्रिंग ऑपरेशन
क्योंकि रेग्युलर एक्सप्रेशंस बहुत कुछ कर सकते हैं, उन्हें सरलतम ऑपरेशन के लिए इस्तेमाल करना लुभावना है। लेकिन रेगेक्स इंजन का उपयोग करने में मेमोरी और प्रोसेसर के उपयोग की लागत होती है: आपको अभिव्यक्ति को संकलित करने, मेमोरी में ऑटोमेटन को स्टोर करने, इसे इनिशियलाइज़ करने और फिर इसे चलाने के लिए स्ट्रिंग के साथ फीड करना होगा।
और ऐसे कई मामले हैं जहां इसका उपयोग करना आवश्यक नहीं है! आपकी पसंद की भाषा जो भी हो, इसमें हमेशा मूल स्ट्रिंग हेरफेर उपकरण होते हैं। इसलिए, एक नियम के रूप में, जब आपके मानक पुस्तकालय में एक क्रिया करने के लिए एक उपकरण होता है, तो उस उपकरण का उपयोग करें, न कि एक रेगेक्स:
- एक स्ट्रिंग विभाजित
उदाहरण के लिए पायथन, रूबी और जावास्क्रिप्ट में निम्नलिखित स्निपेट काम करता है:
'foo.bar'.split('.')
जो पढ़ना और समझना आसान है, साथ ही साथ (किसी तरह) समकक्ष नियमित अभिव्यक्ति की तुलना में बहुत अधिक कुशल है:
(\w+)\.(\w+)
- स्ट्रिप ट्रेलिंग स्पेस?
अनुगामी रिक्त स्थान पर भी यही बात लागू होती है!
'foobar '.strip() # python or ruby
'foobar '.trim() // javascript
जो निम्नलिखित अभिव्यक्ति के बराबर होगा:
([^\n]*)\s*$ # keeping \1 in the substitution
HTML (या XML, या JSON, या C कोड, या…) पार्स करना
यदि आप किसी वेबपेज (या किसी भी प्रतिनिधित्व / प्रोग्रामिंग भाषा) से कुछ निकालना चाहते हैं, तो regex कार्य के लिए गलत उपकरण है। इसके बजाय आपको कार्य को प्राप्त करने के लिए अपनी भाषा के पुस्तकालयों का उपयोग करना चाहिए।
यदि आप HTML, या XML या JSON पढ़ना चाहते हैं, तो बस उस लाइब्रेरी का उपयोग करें जो इसे ठीक से पार्स करता है और इसे आपकी पसंदीदा भाषा में उपयोग करने योग्य ऑब्जेक्ट के रूप में कार्य करता है! आप पठनीय और अधिक बनाए रखने योग्य कोड के साथ समाप्त हो जाएंगे, और आप समाप्त नहीं होंगे
- RegEx, XHTML स्व-निहित टैग को छोड़कर खुले टैग से मेल खाता है
- पायथन ने नियमित एक्सप्रेशंस का उपयोग करके HTML को पार्स किया
- एक निश्चित प्रोग्रामिंग भाषा के लिए सभी पूर्णांक उत्पन्न करने के लिए एक regex है