ट्यूटोरियल
बिना कुछ इंस्टॉल किए regex कैसे जाँचें
आपने एक पैटर्न लिखा है और कोड में डालने से पहले आपको यह जानना है कि क्या वह वाकई वही मिलाता है जिसकी आप अपेक्षा करते हैं। कोई डेस्कटॉप टूल इंस्टॉल करना या किसी अनजान वेबसाइट पर निजी लॉग चिपकाना ज़रूरत से ज़्यादा है, और अक्सर जोखिम भरा भी। यह गाइड दिखाती है कि ब्राउज़र में ही अपने टेक्स्ट पर regex कैसे चलाएँ, व्यवहार बदलने वाले फ़्लैग कैसे चालू-बंद करें, यह जो कैप्चर समूह निकालता है उन्हें कैसे पढ़ें, और मिलानों को टेक्स्ट के भीतर हाइलाइट होते कैसे देखें, जबकि पैटर्न और टेक्स्ट कभी आपके टैब से बाहर नहीं जाते।
चरण दर चरण
- regex टेस्टर खोलें और दो स्लैश के बीच वाले फ़ील्ड में अपना पैटर्न टाइप करें। स्लैश आप खुद नहीं लिखते: टूल उन्हें दिखाता है ताकि आप पैटर्न को उसी तरह देखें जैसे कोई इंजन उसे पढ़ता है। नीचे दिए बॉक्स में अपना नमूना टेक्स्ट चिपकाएँ, जैसे कुछ लॉग पंक्तियाँ, एक ईमेल सूची या कोड का कोई हिस्सा जिसमें आप खोजना चाहते हैं।

- पैटर्न के बगल वाले छोटे बॉक्स में फ़्लैग सेट करें। g फ़्लैग पहले मिलान पर रुकने के बजाय हर मिलान खोजता है; i मिलान को बड़े-छोटे अक्षरों के प्रति असंवेदनशील बनाता है; m से ^ और $ एंकर पूरे टेक्स्ट के बजाय हर पंक्ति की शुरुआत और अंत से मिलते हैं; s से डॉट पंक्ति-विराम से भी मिलता है। इन्हें स्वतंत्र रूप से जोड़ें, जैसे gim।
- Test दबाएँ। हर मिलान सीधे आपके टेक्स्ट में हाइलाइट होता है, और नीचे दी सूची हर मिलान को उसकी स्थिति और हर कैप्चर समूह के मान के साथ दिखाती है। पैटर्न में बदलाव करें और फिर से चलाएँ: पूर्वावलोकन अपडेट होता है ताकि आप पैटर्न को तब तक सीमित कर सकें जब तक वह ठीक वही न पकड़ ले जो आपका मतलब था और उससे ज़्यादा कुछ नहीं।

कैप्चर समूह, नामित और क्रमांकित
कैप्चर समूह आपके पैटर्न का वह हिस्सा है जो कोष्ठकों में लिपटा होता है, और यही वह तरीका है जिससे आप पूरे मिलान की पुष्टि करने के बजाय हर मिलान से एक टुकड़ा निकालते हैं। क्रमांकित समूह उनके खुलने वाले कोष्ठक के अनुसार बाएँ से दाएँ गिने जाते हैं: (\d{4})-(\d{2})-(\d{2}) में समूह 1 वर्ष है, समूह 2 माह, समूह 3 दिन। नामित समूह (?<name>...) वाक्यविन्यास का उपयोग करते हैं, इसलिए जब पैटर्न बढ़ता है तो (?<year>\d{4}) किसी नंगे अंक की तुलना में कहीं बेहतर पढ़ा जाता है। यदि आप केवल समूह बनाना चाहते हैं बिना कैप्चर किए, जैसे कई अक्षरों पर कोई क्वांटिफ़ायर लगाने के लिए, तो एक गैर-कैप्चरिंग समूह (?:...) उपयोग करें ताकि वह आपकी परिणाम सूची में भीड़ न करे। टेस्टर हर मिलान के लिए हर समूह का मान दिखाता है, जो यह पुष्टि करने का सबसे तेज़ तरीका है कि आप सही हिस्सा निकाल रहे हैं।
जब पैटर्न अटक जाए या गलत बर्ताव करे
दो समस्याएँ बार-बार सामने आती हैं। पहली है विनाशकारी बैकट्रैकिंग: (a+)+$ जैसा पैटर्न किसी लंबी न-मिलने वाली स्ट्रिंग पर चलाने से इंजन घातांकीय संख्या में रास्ते आज़माने लगता है और जम जाता है। टेस्टर हर जाँच को एक छोटे वॉचडॉग के साथ Web Worker में चलाता है, इसलिए जमे हुए टैब के बजाय आपको एक स्पष्ट संदेश मिलता है और आप पैटर्न को सरल कर सकते हैं, आम तौर पर किसी क्वांटिफ़ायर को भाव में अधिकारवाचक बनाकर, उसे एंकर करके, या नेस्टेड पुनरावृत्ति से बचकर। दूसरी है लालची बनाम आलसी मिलान: डिफ़ॉल्ट रूप से .* जितना पकड़ सके उतना पकड़ लेता है, इसलिए किसी एकल HTML टैग की सामग्री से मिलान करने के लिए आपको इसके बजाय आलसी रूप .*? चाहिए। यदि आप किसी स्ट्रिंग के दो थोड़े भिन्न संस्करणों की तुलना कर रहे हैं ताकि देख सकें कि आपके पैटर्न को किसे निशाना बनाना चाहिए, तो टेक्स्ट डिफ़ टूल उन्हें आमने-सामने रख देता है ताकि एक्सप्रेशन लिखने से पहले अंतर साफ़ दिखे।
Browser आपके regex को कैसे evaluate करता है
Modern browsers एक built-in ECMAScript regex engine ship करते हैं जो full flag set support करता है: case-insensitive matching (i), multiline mode (m), dotAll (s), Unicode (u), और sticky flag (y)। जब आप tester में pattern type करते हैं, engine इसे internal NFA में compile करता है और real time में आपके test string के against evaluate करता है, हर match position और कोई capture groups report करता है। Backtracking आपके CPU पर locally होता है: लंबे non-matching string पर (a+)+ जैसा pattern seconds के लिए spin कर सकता है, और उस stall को browser में देखना production code में pattern deploy करने से पहले useful feedback है। कोई text page से बाहर नहीं जाता, इसलिए आप log samples या कोई भी input किसी third-party server के माध्यम से route किए बिना paste कर सकते हैं।
इस गाइड में इस्तेमाल किए गए टूल
अक्सर पूछे जाने वाले सवाल
क्या मेरा पैटर्न या जाँच का टेक्स्ट किसी सर्वर पर भेजा जाता है?
नहीं। regex आपके अपने ब्राउज़र में एक Web Worker के भीतर चलता है, इसलिए पैटर्न और जिस टेक्स्ट पर आप जाँच करते हैं वह टैब में ही रहता है। यह मायने रखता है क्योंकि आप जो टेक्स्ट चिपकाते हैं वह अक्सर एक असली लॉग, ग्राहक सूची या आंतरिक कॉन्फ़िग होता है, ठीक वही डेटा जिसे आप किसी और के सर्वर पर नहीं रखना चाहते। Test दबाते समय अपने डेवलपर टूल का Network पैनल खोलें और आपको कोई अनुरोध आपका टेक्स्ट बाहर ले जाते नहीं दिखेगा। पेज एक बार लोड हो जाने पर यह ऑफ़लाइन भी काम करता रहता है।
टेस्टर किस regex शैली का उपयोग करता है?
यह आपके ब्राउज़र में निर्मित JavaScript के रेगुलर एक्सप्रेशन इंजन का उपयोग करता है, वही जो Node.js में और किसी भी वेब पेज में चलता है। यह सामान्य वाक्यविन्यास को कवर करता है: कैरेक्टर क्लास, क्वांटिफ़ायर, एंकर, विकल्पन, क्रमांकित और नामित कैप्चर समूह, लुकअहेड और लुकबिहाइंड। अन्य शैलियों की कुछ सुविधाएँ, जैसे Perl-शैली पुनरावर्तन या अधिकारवाचक क्वांटिफ़ायर, JavaScript इंजन का हिस्सा नहीं हैं, इसलिए यदि किसी PHP या Python परियोजना से नकल किया गया कोई पैटर्न अलग बर्ताव करता है, तो आम तौर पर शैली का यही अंतर इसका कारण होता है।