रेगुलर एक्सप्रेशन के लिए शुरुआती गाइड (रेगेक्स)
एक नियमित अभिव्यक्ति एक पैटर्न बनाने वाले पात्रों का एक सेट है जिसे एक स्ट्रिंग में खोजा जा सकता है। रेगेक्स के लिए इस्तेमाल किया जा सकता है मान्यता जैसे क्रेडिट कार्ड नंबर को मान्य करने के लिए खोज यानी जटिल पाठ मैचों के माध्यम से, और के लिए मिलान किए गए पाठ की जगह एक और स्ट्रिंग के साथ। इसमें कई बहु भाषा समर्थन भी हैं - इसे एक बार सीखें और आप इसे कई प्रोग्रामिंग भाषाओं में उपयोग कर सकते हैं.
मैंने देखा है कि कुछ लोग regex पर पहली नज़र डालते हैं, और इसे पूरी तरह से अनदेखा कर देते हैं। मैं उन्हें दोष नहीं देता; रेगेक्स का वाक्य विन्यास जटिल है और उन कमांड लाइन भाषाओं की तरह ही बहुत खराब कर देगा, केवल बदतर। लेकिन तब हर नई चीज डरावनी होती है और पहली बार में सीखना असंभव लगता है। इसलिए, होरियटस के शब्द उधार लेकर मैं यह कहूंगा; शुरू करें, बोल्ड बनें, और बुद्धिमान होने का उपक्रम करें.
रेगेक्स के बारे में
रेगेक्स की तंत्रिका विज्ञान और गणित में अपनी जड़ें थीं और इसे केवल 1968 में केन थॉम्पसन द्वारा QED टेक्स्ट एडिटर में टेक्स्ट सर्च के लिए प्रोग्रामिंग में लागू किया गया था। अब यह पर्ल, जावा, पायथन, रूबी और जावास्क्रिप्ट जैसी कई प्रोग्रामिंग भाषाओं का हिस्सा है.
आइए कुछ उदाहरण देखें कि रेगेक्स कैसे काम करता है.
मैं अपने उदाहरणों में जावास्क्रिप्ट का उपयोग करूँगा। अब, शुरुआती स्तर को पारित करने के लिए, आपको सभी सीखने की जरूरत है वर्ण, वर्ग, मात्रात्मक, संशोधक और विधियाँ रेगेक्स में उपयोग किया जाता है। यहां मोज़िला डेवलपर नेटवर्क के रेगुलर एक्सप्रेशन पेज का लिंक दिया गया है, जहां आप एक टेबल देख सकते हैं। आप इस पोस्ट के अंत में सबसे अधिक उपयोग किए जाने वाले वर्णों के साथ चीटशीट का भी उल्लेख कर सकते हैं.
आइए स्पष्टीकरण के साथ एक सरल उदाहरण देखें। यह एक रेगीक्स है.
यह वही है जो उपरोक्त रेगीक्स एक लाइन में देखेगा, एक वर्ण 'बी' जिसके बाद किसी भी वर्ण के बीच कम से कम एक अक्षर (और शामिल है) 'ए' से 'जेड', 'ए' से 'जेड' और संख्या 0। 9.
यहां हाइलाइट किए गए मैचों का एक नमूना है:
टोकरी, बल्ब, बी 12 विटामिन, BaSO4, एन ईसा पूर्व कंपनी
उपरोक्त रेगेक्स खोज पर रोक देगा टोकरी और सकारात्मक प्रतिक्रिया लौटाते हैं। ऐसा इसलिए है क्योंकि वैश्विक संशोधक 'जी
'निर्दिष्ट करना होगा यदि आप चाहते हैं कि रेगेक्स सभी संभावित मैचों में देखे.
अब, आइए देखें कि जावास्क्रिप्ट में इस अभिव्यक्ति का उपयोग कैसे करें। परीक्षा
विधि जाती है: यदि एक मैच रिटर्न मिला सच
, अन्य असत्य
.
var input = "आपका परीक्षण स्ट्रिंग", regex = / B [a-zA-Z \ d] + /; अगर (regex.test (इनपुट)) अलर्ट ('कोई मिलान नहीं मिला है'); और सतर्क ('एक मैच पाया जाता है');
चलिए एक और तरीका आजमाते हैं: मैच
किसी सरणी में पाए गए मैचों को लौटाता है.
var input = "आपका परीक्षण स्ट्रिंग", regex = / B [a-zA-Z \ d] + / g, / * मैंने सभी मैचों को प्राप्त करने के लिए regex में वैश्विक संशोधक 'g' जोड़ा है * / ary = input.match (regex); if (anry === null) अलर्ट ('कोई मेल नहीं मिला है'); और सतर्क ('मैच हैं:' + ary.toString ());
कैसे स्ट्रिंग के बारे में? बदलने के
? चलो अब regex के साथ प्रयास करें.
var इनपुट = "आपका परीक्षण स्ट्रिंग", regex = / B [a-zA-Z \ d] + / g; चेतावनी (input.replace (regex, "#"));
नीचे आपको ट्वीक करने के लिए एक कोडपेन है। JS कोड देखने के लिए "जावास्क्रिप्ट" टैब पर क्लिक करें.
अभ्यास
अभ्यास के लिए, आप गूगल कर सकते हैं “रेगेक्स अभ्यास” और उन्हें हल करने का प्रयास करें। कठिनाई स्तर के अनुसार, इन अभ्यासों का प्रयास करते समय क्या करना है.
बुनियादी
मेरे लिए सक्षम होने के लिए एक पासवर्ड मान्य करें शुरुआत के लिए पर्याप्त है। तो, 8 से 16 वर्ण लंबाई के लिए पासवर्ड को मान्य करें, अल्फ़ान्यूमेरिक को आपकी पसंद के विशेष वर्णों की अनुमति है.
मध्यम
यह वह जगह है जहाँ आपको अधिक वास्तविक विश्व डेटा के साथ अभ्यास करना चाहिए और कुछ और रेगेक्स पॉइंट जैसे सीखना चाहिए दिखावे, दिखावे के लिए तथा मेल खाने वाले समूह;
- पिन कोड, हेक्साडेसिमल, दिनांक, ईमेल आईडी, फ्लोटिंग पॉइंट को मान्य करें.
- अनुगामी शून्य, व्हाट्सएप, मिलान शब्दों का एक सेट बदलें
- एक URL के विभिन्न भागों को निकालें
उन्नत
आप उपरोक्त अभ्यासों के समाधानों को अनुकूलित कर सकते हैं - ईमेल के लिए सबसे इष्टतम रेगेक्स में हजारों अक्षर हैं - इसलिए जहां तक आप इसे सहज महसूस करते हैं और यह पर्याप्त है. आप भी आजमा सकते हैं:
- HTML या XML को पार्स करना (वास्तविक दुनिया में ऐसा करना इसलिए हतोत्साहित किया जाता है क्योंकि HTML जैसी गैर-नियमित भाषा को पार्स करने के लिए नियमित अभिव्यक्ति का उपयोग करना कभी भी इसे मूर्खतापूर्ण नहीं बनाएगा। प्लस XML पार्सिंग एक कठिन कार्य है, जो उन्नत उपयोगकर्ताओं के लिए अधिक उपयुक्त है)।
- टैग बदलना
- टिप्पणियों को हटाना (IE सशर्त टिप्पणियों को छोड़कर)
उपकरण
करने के लिए उपकरण regex कल्पना करें वहाँ मेरे लिए सबसे अच्छी चीजों में से एक हैं। यदि आप कभी भी एक लंबे जटिल रेगेक्स में आते हैं, तो बस उन्हें एक टूल में पेस्ट करें और आप प्रवाह को स्पष्ट रूप से देख पाएंगे। इसके अलावा, कई उपकरण हैं जिनका उपयोग आप रेगेक्स कोड के साथ फिडेल कर सकते हैं। वे साझा सुविधाओं के साथ-साथ उदाहरण और चीटशीट भी दिखाते हैं.
- Debuggex - यह आपके इनपुट के अनुसार एक रेगेक्स आरेख बनाता है और आप वहां से StackOverflow को एक त्वरित शेयर कर सकते हैं.
- RegExr - आप इस के साथ अपने regex का परीक्षण कर सकते हैं। इसे संदर्भ, एक चीटशीट और उदाहरण भी मिले जिससे आपको मदद मिल सके.
- Refiddle - फिलहाल, जावास्क्रिप्ट के अलावा, आप इसमें रूबी और .NET रेगेक्स के .NET वर्जन के साथ भी फील कर सकते हैं.
रेगेक्स धोखा देती है
टोकन | परिभाषा |
[Abc] | कोई भी एकल वर्ण a, b या c है |
[^ Abc] | A, b या c के अलावा कोई भी वर्ण |
[A-z] | Z के बीच (सहित) अक्षर |
[^ A-z] | Z से एक वर्ण को छोड़कर |
[A-Z] | (Z सहित) A के बीच का वर्ण |
. | कोई एक वर्ण |
\ रों | कोई भी व्हाट्सएप चरित्र |
\ एस | कोई भी गैर-व्हाट्सएप चरित्र |
\ घ | कोई अंक 0 से 9 |
\ डी | कोई भी गैर-अंक |
\ w | कोई भी शब्द वर्ण (अक्षर, संख्या और अंडरस्कोर) |
\ डब्ल्यू | कोई भी गैर-शब्द चरित्र |
(…) | हर चीज पर कब्जा कर लो |
(A | b) | मैच या तो एक या बी |
ए? | चरित्र ए या तो अनुपस्थित है या एक समय में मौजूद है |
ए* | चरित्र ए या तो अनुपस्थित है या अधिक बार मौजूद है |
ए+ | चरित्र एक या एक से अधिक बार मौजूद है |
एक 3 | चरित्र के 3 घटनाएँ लगातार |
एक 3, | चरित्र के लगातार 3 या अधिक बार होना |
एक 3,6 | चरित्र के 3 से 6 घटनाएँ लगातार |
^ | स्ट्रिंग की शुरुआत |
$ | स्ट्रिंग का अंत |
\ b | एक शब्द सीमा। यदि एक चरित्र एक शब्द का अंतिम या पहला शब्द चरित्र है या यदि एक चरित्र एक शब्द या गैर-शब्द चरित्र के बीच है |
\ बी | गैर-शब्द सीमा |