Regex टेस्टर
एक रेगुलर एक्सप्रेशन लिखें और देखें कि वह ठीक-ठीक क्या मैच करता है, लाइव, आपके browser में।
यह Regex टेस्टर आपको एक रेगुलर एक्सप्रेशन बनाने और उसे अपने ही टेक्स्ट पर तुरंत फ़ीडबैक के साथ आज़माने देता है। जैसे ही आप पैटर्न टाइप करते हैं, आपके सैंपल टेक्स्ट में मैच जगमगा उठते हैं, एक काउंटर दिखाता है कि कितने मिले, और कोई भी कैप्चर ग्रुप अलग करके दिखाया जाता है ताकि आप ठीक-ठीक देख सकें कि पैटर्न के हर हिस्से ने क्या पकड़ा। यह सब आपके browser में चलता है, और आपका टेक्स्ट कभी अपलोड नहीं होता।
रेगुलर एक्सप्रेशन ताक़तवर हैं पर मशहूर रूप से नाज़ुक भी, और किसी एक को सही करने का सबसे तेज़ तरीक़ा है उसे असली इनपुट पर काम करते देखना। कोई फ़्लैग टॉगल करना या कैरेक्टर क्लास में फेरबदल करना और हाइलाइट को तुरंत अपडेट होते देखना, ट्रायल-एंड-एरर को कुछ तेज़ और दृश्य बना देता है।
यह टेस्टर JavaScript रेगुलर एक्सप्रेशन इंजन का इस्तेमाल करता है, वही जो हर browser में बना होता है। इससे यह वेब कोड के लिए regex लिखने वाले किसी के लिए भी आदर्श है, पर उसका फ़्लेवर जानना ज़रूरी है, क्योंकि Python या PCRE जैसे अलग-अलग regex इंजन में पैटर्न थोड़ा अलग व्यवहार करते हैं।
Regex टेस्टर कैसे इस्तेमाल करें
- जिस टेक्स्ट में खोजना है उसे इनपुट एरिया में टाइप या पेस्ट करें।
- पैटर्न फ़ील्ड में अपना रेगुलर एक्सप्रेशन डालें।
- जो फ़्लैग चाहिए उन्हें टॉगल करें, जैसे g, i, m, s, या u।
- एडिट करते हुए मैच को लाइव हाइलाइट होते देखें और मैच काउंट जाँचें।
- हर मैच के कैप्चर ग्रुप पढ़ें ताकि पक्का हो कि पैटर्न सही हिस्से पकड़ रहा है।
टेस्टर आपको क्या दिखाता है
आपके कुछ भी बदलते ही तीन चीज़ें अपडेट होती हैं: आपके टेक्स्ट के अंदर हाइलाइट हुए मैच, कितने मैच मिले इसकी चलती गिनती, और हर कैप्चर ग्रुप की सामग्री। तीनों को साथ देखना बताता है कि पैटर्न सिर्फ़ मैच करता है या नहीं, बल्कि यह भी कि वह ठीक-ठीक क्या मैच और बाहर खींच रहा है।
कैप्चर ग्रुप अक्सर वहीं होते हैं जहाँ पैटर्न चुपचाप ग़लत हो जाता है। कोई regex कुल-मिलाकर सही टेक्स्ट मैच कर सकता है जबकि कोई ग्रुप ज़रूरत से ज़्यादा या कम पकड़ ले, और हर ग्रुप को अलग दिखाना उस ग़लती को कोड तक पहुँचने से पहले साफ़ कर देता है।
फ़्लैग समझना
फ़्लैग बदलते हैं कि पूरा पैटर्न कैसे व्यवहार करता है। g फ़्लैग पहले मैच पर रुकने के बजाय हर मैच ढूँढता है, i मैचिंग को केस-असंवेदनशील बनाता है, और m लाइन की शुरुआत और अंत के एंकर को पूरी स्ट्रिंग के बजाय हर लाइन पर लागू होने देता है।
s फ़्लैग, जिसे कभी-कभी dotall कहते हैं, डॉट को न्यूलाइन कैरेक्टर भी मैच करने देता है, जो कई लाइनों में फैले पैटर्न के लिए काम का है। u फ़्लैग पूर्ण Unicode हैंडलिंग चालू करता है। इन्हें यहाँ चालू-बंद टॉगल करें और मैच हाइलाइट दोबारा खिंच जाते हैं ताकि हर फ़्लैग का असर सीधे दिखे।
JavaScript regex फ़्लेवर मायने रखता है
यही ध्यान में रखने वाली ईमानदार चेतावनी है। टूल JavaScript regex इंजन चलाता है, इसलिए यहाँ आप जो बनाते हैं वह browser और Node.js कोड में ठीक वैसा ही व्यवहार करेगा, पर ज़रूरी नहीं कि Python, PCRE, Java, या .NET में भी वैसा ही हो।
अंतर लुकबिहाइंड सपोर्ट, नेम्ड ग्रुप सिंटैक्स, कुछ Unicode प्रॉपर्टी एस्केप, और कुछ किनारे के मामलों को संभालने जैसी चीज़ों में दिखते हैं। अगर आपका पैटर्न किसी ग़ैर-JavaScript माहौल के लिए है, तो उसे भेजने से पहले उसी इंजन में जाँचें, और यहाँ के नतीजों को सिर्फ़ JavaScript के लिए ही आधिकारिक मानें।
कौन इस्तेमाल करता है और क्यों
डेवलपर इसे लगातार इस्तेमाल करते हैं: ईमेल या फ़ोन फ़ॉर्मैट जाँचना, लॉग लाइनें पार्स करना, बिखरी स्ट्रिंग से फ़ील्ड निकालना, या अपने एडिटर के लिए फाइंड-एंड-रिप्लेस पैटर्न लिखना। असली सैंपल पर पहले एक्सप्रेशन सही कर लेना बाद की डिबगिंग बचाता है।
यह कोडिंग से बाहर डेटा सफ़ाई के लिए भी उतना ही काम का है। अगर आप एक्सपोर्ट किया डेटा संभाल रहे हैं और किसी दोहराते पैटर्न को पहचानना या हटाना है, तो असली डेटा के एक टुकड़े पर यहाँ regex जाँचना पक्का करता है कि असल में चलाने से पहले वह वही करता है जिसकी आप उम्मीद करते हैं।
पैटर्न बनाने के सुझाव
छोटे से शुरू करें और पैटर्न को टुकड़ा-टुकड़ा बढ़ाएँ, हर जोड़ के बाद हाइलाइट जाँचते हुए। यह देखना कि किस बदलाव ने चलते पैटर्न को तोड़ा, एक ही बार में लिखे लंबे एक्सप्रेशन को डिबग करने से कहीं आसान है।
यथार्थवादी सैंपल टेक्स्ट पेस्ट करें, उन मुश्किल किनारे-मामलों समेत जिन्हें आप पकड़ना या टालना चाहते हैं। साफ़-सुथरे उदाहरणों पर चलने वाला पैटर्न अक्सर असली इनपुट पर लड़खड़ा जाता है, इसलिए गड़बड़ चीज़ें जल्दी दें। जब आप डॉट और कोष्ठक जैसे ख़ास कैरेक्टर को अक्षरशः चाहें तो उन्हें एस्केप करना न भूलें।
सब कुछ आपके browser में रहता है
आपका पैटर्न और आपका टेस्ट टेक्स्ट दोनों browser के अपने regex इंजन से लोकल रूप से प्रोसेस होते हैं। कुछ भी किसी सर्वर पर नहीं भेजा जाता, जो तब मायने रखता है जब आपका सैंपल डेटा असली हो: लॉग के अंश, ग्राहक रिकॉर्ड, या कुछ भी जिसे आप अपनी मशीन से बाहर नहीं जाने देना चाहते।
कोई अकाउंट नहीं और सर्वर पर सेव कोई हिस्ट्री नहीं। जब आप टैब बंद करते हैं, आपका पैटर्न और डेटा चले जाते हैं, इसलिए जो रखना है उसे कॉपी कर लें। उस प्राइवेसी की क़ीमत यह है कि टूल दो विज़िट के बीच आपका काम याद नहीं रखता।
जिन सीमाओं का ध्यान रखें
ख़राब लिखा पैटर्न बड़े इनपुट पर धीमा हो सकता है, ख़ासकर वह जो नेस्टेड क्वांटिफ़ायर के साथ कैटास्ट्रोफ़िक बैकट्रैकिंग का शिकार हो। अगर किसी एडिट के बाद पेज अटका लगे, तो उसे और टेक्स्ट देने के बजाय पैटर्न को सरल करें।
यह टेस्टर एक्सप्रेशन बनाने और जाँचने के लिए है, विशाल फ़ाइलों की थोक-प्रोसेसिंग के लिए नहीं। यह अच्छे-ख़ासे सैंपल आराम से संभालता है, पर यह regex को सही करने की एक वर्कबेंच है, जिसके बाद आप तैयार पैटर्न अपने कोड या एडिटर में चलाते हैं।
अक्सर पूछे जाने वाले सवाल
यह कौन-सा regex फ़्लेवर इस्तेमाल करता है?
यह आपके browser में बने JavaScript रेगुलर एक्सप्रेशन इंजन का इस्तेमाल करता है। पैटर्न browser और Node.js कोड में ठीक वैसे ही व्यवहार करते हैं, पर Python, PCRE, Java, या .NET से अलग हो सकते हैं, इसलिए ज़रूरत हो तो कहीं और जाँचें।
क्या मेरा पैटर्न या टेस्ट टेक्स्ट अपलोड होता है?
नहीं। आपका regex और सैंपल टेक्स्ट दोनों पूरी तरह आपके browser में उसके अपने regex इंजन से प्रोसेस होते हैं। कुछ भी किसी सर्वर पर नहीं भेजा जाता, इसलिए असली लॉग या डेटा सैंपल पर जाँचना सुरक्षित है।
g, i, m, s, और u फ़्लैग क्या करते हैं?
g सारे मैच ढूँढता है, i केस अनदेखा करता है, m लाइन एंकर हर लाइन पर लगाता है, s डॉट को न्यूलाइन मैच करने देता है, और u पूर्ण Unicode हैंडलिंग चालू करता है। इन्हें यहाँ टॉगल करें और मैच हाइलाइट तुरंत अपडेट होते हैं।
क्या यह कैप्चर ग्रुप दिखाता है?
हाँ। हर मैच के लिए टूल कैप्चर ग्रुप अलग करके दिखाता है ताकि आप पक्का कर सकें कि पैटर्न का हर हिस्सा सही टेक्स्ट पकड़ रहा है। इससे ऐसा ग्रुप पहचानना आसान हो जाता है जो ज़रूरत से ज़्यादा या कम पकड़ता है।
टेस्टर कभी-कभी धीमा क्यों लगता है?
नेस्टेड क्वांटिफ़ायर वाला पैटर्न कैटास्ट्रोफ़िक बैकट्रैकिंग शुरू कर सकता है, जो बड़े इनपुट पर धीमा है। अगर पेज अटका लगे, तो और टेक्स्ट जोड़ने के बजाय पैटर्न को सरल करें, और छोटे सैंपल पर जाँचें।
क्या यह दो विज़िट के बीच मेरा काम सेव करता है?
नहीं। कोई अकाउंट या सर्वर-साइड हिस्ट्री नहीं है। आपका पैटर्न और टेक्स्ट सिर्फ़ खुले टैब में रहते हैं, इसलिए बंद करने से पहले जो रखना है उसे कॉपी कर लें। यह टूल को डिज़ाइन से ही पूरी तरह प्राइवेट रखता है।