दिलचस्प पोस्ट
PHP में एक बहुआयामी सरणी छंटनी? AngularJS: एक HTTP इंटरसेप्टर (सर्कुलर निर्भरता) में सेवा इंजेक्शन आवश्यक पुस्तकालय rt.jar पर प्रतिबंध के कारण कक्षा पर पहुंच प्रतिबंध? स्विफ्ट में दो (या अधिक) विकल्प क्या करता है? कोणीय में पासवर्ड-जांच निर्देश बैबल-लोडर जेएसएक्स सिंटेक्स त्रुटि: अनपेक्षित टोकन ACTION_SEND इरादे के लिए विशिष्ट एप्लिकेशन फ़िल्टर कैसे करें (और प्रत्येक ऐप के लिए एक अलग टेक्स्ट सेट करें) फ़ंक्शन में 2 आयामी सरणी को पास करने का सही तरीका एचटीएमएल। बिगिनकॉलक्शनइटम सहायताकर्ता का उपयोग कर संग्रह से एक आंशिक दृश्य प्रतिलिपि elision और वापसी मूल्य अनुकूलन क्या हैं? जीमेल एसएमटीपी को कोडिगनिटर ईमेल लाइब्रेरी के साथ ईमेल भेजना jQuery चयनकर्ता + एसवीजी असंगत है? एंड्रॉइड एनडीके: बैकट्र्रेस प्राप्त करना रेक डीबी: स्कीमा: लोड बनाम माइग्रेशन

नियमित अभिव्यक्ति का उपयोग करने के लिए या नहीं?

मैंने सिर्फ एक प्रश्न के बारे में पूछा था कि -90.0 और +90.0 के बीच संख्याओं को अनुमति देने के लिए एक नियमित अभिव्यक्ति का उपयोग करें। मुझे नियमित अभिव्यक्ति को लागू करने के बारे में कुछ उत्तर मिले, लेकिन अधिकांश उत्तर में यह भी उल्लेख किया गया था कि नियमित रूप से अभिव्यक्ति के बिना या नियमित अभिव्यक्ति का उपयोग किए बिना इसे बेहतर ढंग से नियंत्रित किया जाएगा। तो आप कैसे तय करते हैं कि नियमित अभिव्यक्ति का उपयोग कब किया जाए और नियमित अभिव्यक्ति का उपयोग न करें। क्या कोई चेक सूची है जिसका आप पालन कर सकते हैं?

वेब के समाधान से एकत्रित समाधान "नियमित अभिव्यक्ति का उपयोग करने के लिए या नहीं?"

नियमित अभिव्यक्ति वर्ण-आधारित परीक्षणों के लिए एक पाठ प्रसंस्करण टूल हैं। अधिक औपचारिक रूप से, नियमित अभिव्यक्तियां सामान्य भाषाओं को संभालने में अच्छी लगती हैं और लगभग किसी भी चीज़ पर खराब होती हैं

व्यवहार में, इसका मतलब है कि नियमित अभिव्यक्ति उन कार्यों के लिए अच्छी तरह से अनुकूल नहीं होती है, जो कि पाठ में अर्थ ( शब्दार्थ ) की खोज करने की आवश्यकता होती है जो वर्ण स्तर से परे हो। यह एक पूर्ण विकसित पार्सर की आवश्यकता होगी

आपके विशेष मामले में: किसी पाठ में एक संख्या को पहचानना एक ऐसा व्यायाम होता है जो नियमित अभिव्यक्तियां अच्छी होती है (दशमलव संख्या को एक नियमित भाषा का उपयोग करके वर्णित किया जा सकता है)। यह चरित्र स्तर पर काम करता है

लेकिन संख्या के साथ और अधिक उन्नत सामग्री करनी है जिसके लिए इसके संख्यात्मक मूल्य (अर्थात इसके शब्दों) की आवश्यकता होती है, को व्याख्या की आवश्यकता होती है इस पर नियमित अभिव्यक्ति खराब होती है तो पाठ में एक नंबर ढूँढने में आसान है। पाठ में एक नंबर ढूँढना जो 11 से बड़ा है, लेकिन 1004 से कम (या वह 3 से विभाज्य है) मुश्किल है: इसे संख्या के अर्थ को पहचानने की आवश्यकता है

मैं कहूंगा कि स्ट्रेज पर रेगेक्स एक्सप्रेशन सबसे प्रभावी हैं I अन्य डेटा प्रकारों के लिए, उस डेटा प्रकार की जोड़-तोड़ियां आमतौर पर अधिक सहज हो और अच्छे परिणाम प्रदान करें।

उदाहरण के लिए, यदि आप जानते हैं कि आप डेटटाइम के साथ काम कर रहे हैं, तो आप पार्स और ट्राई पेर्स विधियों का उपयोग कर सकते हैं, विभिन्न प्रारूप और यह आमतौर पर आपके खुद के रेगेक्स एक्सप्रेशंस से अधिक विश्वसनीय होगा।

आपके उदाहरण में, आप संख्याओं के साथ काम कर रहे हैं, तदनुसार उनसे निपटें।

रेगेक्स बहुत शक्तिशाली है, लेकिन यह पढ़ने और डिबग करने के लिए सबसे आसान कोड नहीं है। जब एक और विश्वसनीय समाधान हाथ में है, तो आपको शायद इसके लिए जाना चाहिए।

परिपत्र या नीच होने के अर्थ के बिना, आपको नियमित अभिव्यक्ति का उपयोग करना चाहिए जब आपके पास एक स्ट्रिंग होती है जिसमें एक नियमित भाषा में संरचित जानकारी होती है, और आप इस स्ट्रिंग को ऑब्जेक्ट मॉडल में बदलना चाहते हैं।

जवाब सीधे आगे है:

यदि आप अपनी समस्या को नियमित अभिव्यक्ति (केवल स्ट्रिंग फ़ंक्शन द्वारा) के बिना हल कर सकते हैं, तो आप नियमित अभिव्यक्तियों का उपयोग नहीं करते हैं जैसा कि मैंने एक किताब में पढ़ा है: नियमित अभिव्यक्ति कम्प्यूटर पर हिंसा है

यदि यह भाषा स्ट्रिंग फ़ंक्शंस का उपयोग करने के लिए जटिल है, तो नियमित अभिव्यक्ति का उपयोग करें।

RegEx के लिए बेसिक उपयोग-केस: –

  1. आपको "कुंजी मान जोड़े" की आवश्यकता है – अन्य शोर पाठ के भीतर कुंजी और मान दोनों एम्बेडेड हैं – अन्यथा प्रवेश नहीं किया जा सकता है या पृथक किया जा सकता है

  2. आपको एकाधिक दस्तावेज़ों को पाशन करके इन मूल्यों को निकालना स्वचालित करना होगा।

  3. संख्या और कुंजी वैल्यू युग्मों का संयोजन, जैसा कि आप पाठ के माध्यम से पार्सिंग की प्रगति की खोज करते हैं।