दिलचस्प पोस्ट
विभिन्न प्रकार की अन्य संस्थाओं के लिए एक संस्था का आईडी पुन: उपयोग करना – समझदार विचार? मेटप्ललिब स्कैटरप्लॉट; रंग एक तीसरे चर के एक समारोह के रूप में NSDateFormatter लोकेल "फीचुर" से निपटने का सबसे अच्छा तरीका क्या है? Gcloud क्लाइंट के बिना Google कंटेनर रजिस्ट्री का उपयोग करें GetLastError () द्वारा दिए गए त्रुटि कोड से त्रुटि संदेश कैसे प्राप्त करें? PHP के साथ एक सादा पाठ फ़ाइल पढ़ें एक सरणी सूची को रिवर्स करने का सरल तरीका क्या है? Android पर कस्टम टोस्ट: एक सरल उदाहरण एक डेटाबेस मॉडल को विकसित करने में अनिश्चितता ASP.NET MVC 4 + Ninject MVC 3 = इस ऑब्जेक्ट के लिए कोई पैरामीटरलेस निर्माता परिभाषित नहीं है एक बैच फ़ाइल से एक exe के लिए एक शॉर्टकट बनाने LINQ का उपयोग करके कोड की एक पंक्ति में स्ट्रिंग को int में परिवर्तित करें सी ++ 11 रैवल्यूज़ और स्थानांतरित सिमेंटिक्स भ्रम (रिटर्न स्टेटमेंट) क्या दुनिया के सभी पते के लिए आम सड़क पता डेटाबेस डिजाइन है? जेनरिक – जहां टी एक संख्या है?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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