मैं उनसे कैसे निपटूं?
किसी नई चीज की तरह:
10 Study
20 Practice
30 goto 10
अध्ययन
मुझे लगता है कि सबसे सफल शिक्षक किसी भी विषय को पहले पृष्ठभूमि की एक बिट प्रदान करके पढ़ाना शुरू करते हैं। आप जो सीख रहे हैं उसका संदर्भ होना सबसे महत्वपूर्ण है और सबसे महत्वपूर्ण बात यह है कि आप इसे क्यों सीख रहे हैं।
यह सब स्ट्रिंग मिलान है
रेगुलर एक्सप्रेशंस टेक्स्ट में मैचिंग पैटर्न का एक साधन है। यह एक घोषणात्मक भाषा है जो कई अन्य प्रोग्रामिंग भाषा में शामिल है।
मैं जोर देना है कि यह एक कथात्मक भाषा है चाहते हैं, नियमित अभिव्यक्ति को व्यक्त करने के लिए उपयोगी होते क्या स्ट्रिंग के मिलान, लेकिन वे किसी भी तरह से व्यक्त नहीं करते कैसे कार्यक्रम मिलान करने के बारे में जाना है। इस कारण से नियमित अभिव्यक्ति का उपयोग बहुत जल्दी और बहुत धीरे-धीरे एक ही प्रोग्रामिंग भाषा में एक अलग RegEx पार्सर का उपयोग करके संभव है।
नियमित अभिव्यक्ति बनाने का कारण अधिकांश प्रोग्रामिंग भाषाओं के निर्माण के लिए समान हैं: प्रोग्रामर ने खुद को एक ही जटिल कार्य को बार-बार करते हुए पाया और फैसला किया कि वे कोड लिखने का एक सरल तरीका चाहते हैं।
कुछ (और चाहिए) मेरे पिछले वाक्य के बारे में कुछ की लाइनों के साथ कह कर शिकायत करें:
RegEx एक कार्यक्रम को सरल नहीं बनाता है।
यह सच है
रेगुलर एक्सप्रेशन से नहीं करता है एक कार्यक्रम किसी भी सरल, रेगुलर एक्सप्रेशन से बनाता है बनाने के लेखन कार्यक्रम सरल होते हैं। आपको अभी भी अपने परीक्षण में पूरी तरह से निश्चित होने की आवश्यकता है कि सभी सही मामलों का मिलान सही तरीके से हो, और सभी गलत मामले नहीं हैं। "सभी" का परीक्षण करना वास्तव में कठिन है, और जटिल पैटर्न के साथ, "सबसे" का परीक्षण करना वास्तव में कठिन है। सबसे खराब रूप से, आपको अभी भी "कुछ" मामलों का परीक्षण करना चाहिए।
कुछ उदाहरणों को सम्मिलित करने की अनुमति देता हूं, जिन्हें मैंने जावास्क्रिप्ट के RegEx इंजन के लिए चुना है क्योंकि मैं इसे ब्राउज़र में आसानी से लाइव परीक्षण कर सकता हूं और क्योंकि मुझे RegEx शाब्दिक का उपयोग करते समय कोई भी स्ट्रिंग भागने की आवश्यकता नहीं होगी।
जब आप सामान्य स्ट्रिंग मिलान करते हैं, तो आप दूसरे के खिलाफ एक स्ट्रिंग मान का परीक्षण करते हैं। वे कहीं से भी आ सकते हैं, लेकिन अंत में एक-दूसरे के मुकाबले दो तार लगते हैं:
if ( 'foo' == 'bar' ) doSomething();
यही कारण है कि उदाहरण बेकार है क्योंकि यह कभी नहीं होगा करने के लिए कुछ भी
if ( foo == 'bar' ) doSomething();
काफी बेहतर; अब, हम वास्तव में समय से पहले नहीं जानते हैं कि कुछ किया जाएगा या नहीं। अब हम उपयोगकर्ता इनपुट को स्वीकार करना शुरू कर सकते हैं:
if ( prompt( 'Say "bar" to do something.' ) == 'bar' ) doSomething();
अद्भुत है, अब उपयोगकर्ता इनपुट कर सकते हैं bar
और कुछ तब तक होगा, जब तक कि आप उपयोगकर्ताओं से बग रिपोर्ट प्राप्त "bar"
न कर लें कि यह काम नहीं कर रहा है, या यह कि "BAR" काम नहीं कर रहा है, या कि वे BRA
100 बार टाइप कर चुके हैं और कुछ भी नहीं होता है।
गलत वर्तनी और अतिरिक्त पात्रों की उपेक्षा करना 'bar' != 'BAR'
, और प्रोग्रामर को यह सोचने की ज़रूरत है कि परीक्षण कहाँ गलत हैं।
सरल उपाय, उपयोग toLowerCase
। यह आश्चर्यजनक रूप से काम करता है, लेकिन जब आप मिलान कर रहे हैं तो हमारे उन उपयोगकर्ताओं के बारे में जो अमेरिकी अंग्रेजी पर ब्रिटिश अंग्रेजी का उपयोग कर रहे हैं something == 'color'
? अब आपको मैच करना होगा something == 'color' || somthing == 'colour'
।
लंबी कहानी छोटी, सरल पैटर्न बहुत जल्दी दोहराए जाने वाले कोड में बदल जाती है।
रंग उदाहरण के साथ बस मिलान किया जा सकता है:
/colou?r/.test( something )
नियमित अभिव्यक्तियों की बुनियादी बातों की एक ठोस समझ आपको पहिया को फिर से स्थापित करने में बर्बाद करने वाले समय को काफी कम कर सकती है।
पढ़ाई कहां से करें
अधिकांश भाषाएं जो नियमित अभिव्यक्ति को लागू करती हैं, उनके पास उस भाषा के भीतर नियमित अभिव्यक्ति का उपयोग करने के विशिष्ट सिंटैक्स के लिए कम से कम एक संसाधन उपलब्ध होता है। जावास्क्रिप्ट के लिए एक एमडीएन पर पाया जा सकता है
इसे पढ़ें।
यह सब।
तो इसे फिर से पढ़ें।
सीखने में समय लगता है, इसे एक निवेश के रूप में सोचें: RegEx सीखने के लिए एक घंटे अब अगली बार एक घंटे बचाता है जब आपको कुछ स्ट्रिंग पैटर्न मिलान करने की आवश्यकता होती है, और फिर उसके बाद अगले घंटे।
अभ्यास
RegEx के बारे में सब पढ़ने के बाद, आप शायद इसे ज़्यादातर नहीं समझ पाएंगे। ऐसा इसलिए है क्योंकि आप वास्तव में नहीं कर रहे हैं कर रही है इसके साथ कुछ भी।
मैंने उल्लेख किया कि मैंने जेएस को इस उदाहरण के लिए क्यों चुना, मैं आपसे इसके ब्राउज़र में गड़बड़ करने का आग्रह करता हूं। यह त्वरित है, और आप इसे अपने URL बार में सही कर सकते हैं।
JS ने RegEx का उपयोग करने के कुछ अलग और सरल तरीके दिए हैं:
string.match( regex )
regex.exec( string )
regex.test( string )
कुछ सरल से शुरू करना जैसे:
javascript:'color'.match(/colou?r/);
दरवाजे में अपना पैर पाने का एक आसान तरीका है। इसके साथ खेलते हैं, यह देखते हैं कि क्या मेल खाता है, और क्या नहीं।
जब आप अभ्यास पर अटक जाते हैं, तो जारी रखें 30
। आपको अधिक जानने के लिए पढ़ने की आवश्यकता है, लेकिन आपने जो सीखा है उसे समझने के लिए आपको अभ्यास करने की आवश्यकता है।