Regex परीक्षक
अपने टेक्स्ट पर रेगुलर एक्सप्रेशन को रियल-टाइम में बनाएँ और टेस्ट करें। हर मैच को हाइलाइट होते देखें, कैप्चर ग्रुप जाँचें, और रिप्लेसमेंट का पूर्वावलोकन करें — सब कुछ आपके ब्राउज़र में।
/
/g
फ़्लैग
सुझाव: सिर्फ़ पहले के बजाय हर मैच को बदलने के लिए g फ़्लैग चालू करें।
Regex परीक्षक का उपयोग कैसे करें
- 1
अपना पैटर्न लिखें
पैटर्न फ़ील्ड में एक रेगुलर एक्सप्रेशन टाइप करें, फिर मैचिंग कैसे काम करे यह ठीक-ठीक नियंत्रित करने के लिए फ़्लैग चिप्स (g, i, m और अन्य) टॉगल करें।
- 2
अपना टेस्ट टेक्स्ट जोड़ें
जिस टेक्स्ट में खोजना है उसे “टेस्ट स्ट्रिंग” बॉक्स में पेस्ट करें। जैसे ही आप पैटर्न टाइप या संपादित करते हैं, मैच तुरंत हाइलाइट हो जाते हैं।
- 3
मैच की जाँच करें
यह पुष्टि करने के लिए कि पैटर्न अपेक्षा के अनुसार काम कर रहा है, परिणाम सूची में हर मैच, टेक्स्ट में उसकी स्थिति, और कोई भी कैप्चर या नेम्ड ग्रुप देखें।
- 4
बदलें या कॉपी करें
$1-शैली के बैकरेफ़रेंस के साथ प्रतिस्थापन का पूर्वावलोकन करने के लिए एक रिप्लेसमेंट दर्ज करें, फिर परिणाम को सीधे अपने कोड या दस्तावेज़ में कॉपी करें।
व्यवहार में रेगुलर एक्सप्रेशन: एक डेवलपर की फ़ील्ड गाइड
regex असल में किसका वर्णन करता है
रेगुलर एक्सप्रेशन स्ट्रिंग के समुच्चयों का वर्णन करने के लिए एक नन्ही पैटर्न भाषा है। यह पूछने के बजाय कि टेक्स्ट किसी नियत मान के बराबर है या नहीं, आप उसका आकार वर्णित करते हैं — अंकों का एक क्रम, एक शब्द जिसके बाद एक at चिह्न और एक डोमेन हो, तीन अक्षर फिर एक डैश — और इंजन आपके टेक्स्ट में हर ऐसी सबस्ट्रिंग खोजता है जो फ़िट बैठती है। यही एक विचार लगभग हर भाषा और एडिटर में सत्यापन, खोज-और-बदलें, लॉग पार्सिंग, टोकनाइज़िंग, और डेटा निष्कर्षण को शक्ति देता है।
यह परीक्षक आपके ब्राउज़र में निर्मित JavaScript (ECMAScript) इंजन का इस्तेमाल करता है, वही जो Node.js और वेब ऐप्स इस्तेमाल करते हैं। इसलिए जो पैटर्न यहाँ मैच करता है वह आपके एप्लिकेशन कोड में बिल्कुल वैसा ही व्यवहार करता है, जो इसे किसी प्रोजेक्ट में पेस्ट करने से पहले पैटर्न बनाने और डीबग करने के लिए एक भरोसेमंद सैंडबॉक्स बनाता है।
कैरेक्टर क्लास और बुनियादी घटक
किसी पैटर्न का अधिकांश हिस्सा बस ऐसे शाब्दिक अक्षर होते हैं जो खुद से मैच करते हैं, जिनके बीच-बीच में मुट्ठी भर विशेष टोकन बिखरे होते हैं। वर्गाकार कोष्ठकों में एक कैरेक्टर क्लास किसी सेट में से कोई एक अक्षर मैच करती है: lowercase अक्षरों की एक श्रेणी, स्वरों का एक सेट, या एक अंक। संक्षिप्त रूप backslash-d एक अंक मैच करता है, backslash-w एक वर्ड कैरेक्टर (अक्षर, अंक, अंडरस्कोर) मैच करता है, backslash-s व्हाइटस्पेस मैच करता है, और एक डॉट न्यूलाइन को छोड़कर किसी भी अक्षर से मैच करता है। संक्षिप्त रूप को उलटने के लिए उसे बड़े अक्षर में लिखें — backslash-D कोई भी गैर-अंक है।
ये वे परमाणु हैं जिन्हें मिलाकर आप बाकी सब कुछ बनाते हैं। उदाहरण के लिए, hex रंग के लिए एक पैटर्न hash चिह्न के लिए एक ऐंकर होता है जिसके बाद hex अंकों की एक कैरेक्टर क्लास दोहराई जाती है; किसी शब्द के लिए एक पैटर्न बस backslash-w है जो एक या अधिक बार दोहराया जाता है। एक विशाल एक्सप्रेशन की ओर हाथ बढ़ाने के बजाय इन छोटे टुकड़ों से पैटर्न बनाएँ।
ऐंकर, क्वांटिफ़ायर, और अल्टरनेशन
ऐंकर अक्षरों के बजाय स्थितियों से मैच करते हैं। caret स्ट्रिंग की शुरुआत से मैच करता है (या multiline फ़्लैग के साथ किसी लाइन की शुरुआत से) और dollar चिह्न अंत से मैच करता है; वर्ड-बाउंड्री टोकन backslash-b एक वर्ड कैरेक्टर और एक गैर-वर्ड कैरेक्टर के बीच के किनारे से मैच करता है, और इसी तरह आप किसी पूरे शब्द को किसी लंबे शब्द के भीतर पकड़े बिना मैच करते हैं। क्वांटिफ़ायर दोहराव को नियंत्रित करते हैं: plus चिह्न का अर्थ है एक या अधिक, asterisk का अर्थ है शून्य या अधिक, और प्रश्नवाचक चिह्न का अर्थ है वैकल्पिक। जब आपको, मान लीजिए, ऐसा मान चाहिए जो दो से चार बार दोहराए, तो आप brace रूप का इस्तेमाल करके एक सटीक गिनती या एक श्रेणी भी निर्दिष्ट कर सकते हैं।
pipe चिह्न के साथ अल्टरनेशन का अर्थ है या — cat या dog का एक पैटर्न दोनों में से किसी भी शब्द से मैच करता है। विकल्प की परिधि तय करने के लिए विकल्पों को कोष्ठकों में लपेटें। डिफ़ॉल्ट रूप से क्वांटिफ़ायर लालची होते हैं, जितना पकड़ सकते हैं उतना पकड़ लेते हैं; क्वांटिफ़ायर के बाद एक प्रश्नवाचक चिह्न जोड़ने से वह आलसी बन जाता है और जितना कम हो सके उतना मैच करता है, जो आम तौर पर वह उपाय है जब एक टैग पकड़ने के लिए बना पैटर्न लाइन के आख़िरी टैग तक सब कुछ निगल जाता है।
कैप्चर ग्रुप और उनका इस्तेमाल कैसे करें
कोष्ठक दोहरी भूमिका निभाते हैं: वे पैटर्न के एक हिस्से को समूहित करते हैं और जो उस हिस्से ने मैच किया उसे कैप्चर करते हैं। किसी मैच के बाद, कैप्चर किए टुकड़े क्रमांकित ग्रुप के रूप में उपलब्ध होते हैं — कोष्ठकों का पहला जोड़ा ग्रुप एक है, अगला ग्रुप दो — और यहाँ परिणाम सूची हर एक को दिखाती है ताकि आप पुष्टि कर सकें कि आप ठीक वही अंश निकाल रहे हैं जो आप चाहते हैं। किसी ईमेल-जैसी स्ट्रिंग के लिए एक पैटर्न, जिसमें local भाग, डोमेन, और एक्सटेंशन के चारों ओर अलग-अलग कोष्ठक हों, आपको उन तीनों टुकड़ों को अलग-अलग पढ़ने देता है।
नेम्ड ग्रुप, जो ऐसे सिंटैक्स के साथ लिखे जाते हैं जो खुलने वाले कोष्ठक के ठीक बाद एक नाम को कोण-कोष्ठकों में रखता है, उन कैप्चर को कोरी संख्याओं के बजाय पठनीय लेबल देते हैं और अपने अलग खंड में दिखाई देते हैं। जब आप कैप्चर के अतिरिक्त बोझ के बिना केवल समूहन चाहते हैं, तो एक नॉन-कैप्चरिंग ग्रुप — एक खुलने वाला कोष्ठक जिसके बाद एक प्रश्नवाचक चिह्न और एक colon हो — आपके ग्रुप नंबरों को साफ़ रखता है। ये कैप्चर ही वह चीज़ हैं जिन्हें आपका रिप्लेसमेंट चरण संदर्भित करता है।
फ़्लैग पूरे मैच को बदल देते हैं
फ़्लैग ऐसे संशोधक हैं जो यह बदल देते हैं कि पूरा पैटर्न कैसे लागू होता है। Global पहले पर रुकने के बजाय हर मैच खोजता है, जो केवल एक के बजाय सभी उपस्थितियों को बदलने के लिए आवश्यक है। Ignore-case से अक्षर कैपिटलाइज़ेशन की परवाह किए बिना मैच करते हैं। Multiline, caret और dollar ऐंकर को इस तरह पुनर्परिभाषित करता है कि वे केवल इनपुट के एकदम शुरू और अंत के बजाय हर लाइन ब्रेक पर मैच करें।
बाकी फ़्लैग स्थिति-विशेष पर निर्भर पर महत्वपूर्ण हैं। Dotall से डॉट न्यूलाइन वर्णों से भी मैच करता है, इसलिए एक पैटर्न कई लाइनों में फैल सकता है। Unicode बुनियादी श्रेणी से परे code point और Unicode property escape के लिए पूर्ण Unicode हैंडलिंग चालू कर देता है। Sticky हर मैच को ठीक पिछले मैच के बाद वाली स्थिति पर बाँध देता है, और इसी तरह टोकनाइज़र आगे छलाँग लगाए बिना इनपुट में से गुज़रते हैं। यहाँ फ़्लैग टॉगल करें और हाइलाइट किए गए मैच को बदलते देखें ताकि हर एक के लिए अंतर्ज्ञान बने।
ऐसे पैटर्न जो आप लगातार लिखेंगे
कुछ आकार बार-बार सामने आते हैं। टेक्स्ट के किसी गोले में से सभी पूर्णांक खींचना global फ़्लैग के साथ एक या अधिक बार दोहराया गया backslash-d है। एक मोटी-मोटी ईमेल जाँच एक या अधिक वर्ड कैरेक्टर, एक at चिह्न, एक या अधिक वर्ड कैरेक्टर, एक शाब्दिक डॉट, और अक्षरों की एक छोटी लड़ी है — एक त्वरित विवेक-छननी के लिए पर्याप्त, हालाँकि जानबूझकर ढीली। व्हाइटस्पेस की लड़ियों को छाँटना या समेटना, lowercase अक्षरों और डैश के किसी slug को सत्यापित करना, और दो चिह्नकों के बीच की सामग्री निकालना — ये सब रोज़मर्रा के काम हैं।
वाकई जटिल फ़ॉर्मैट को एक राक्षसी पैटर्न से सत्यापित करने के लालच का विरोध करें। खासकर ईमेल और URL के व्याकरण को किसी regex में पूरी तरह पकड़ना कुख्यात रूप से कठिन है; उनके लिए, एक ढीला पैटर्न और साथ में एक असली पार्सर या कोई समर्पित लाइब्रेरी आम तौर पर ऐसे अपठनीय एक्सप्रेशन से बेहतर होती है जिसे छूने से आप छह महीने बाद डरेंगे।
विनाशकारी बैकट्रैकिंग और इससे कैसे बचें
इंजन की बैकट्रैकिंग ही वह चीज़ है जो regex को शक्तिशाली बनाती है, पर यह किसी पैटर्न को फटने भी दे सकती है। जब किसी पैटर्न के दो क्वांटिफ़ाइड हिस्से एक ही अक्षरों को कई अतिव्यापी तरीकों से मैच कर सकते हैं — एक उत्कृष्ट उदाहरण ऐसा ग्रुप है जो खुद दोहराया जाता है, जहाँ भीतरी और बाहरी दोहराव आपस में प्रतिस्पर्धा करते हैं — तो इंजन ऐसी स्ट्रिंग के विरुद्ध संयोजनों की एक खगोलीय संख्या आज़मा सकता है जो अंततः मैच करने में विफल हो जाती है। किसी लंबे इनपुट पर यह कई सेकंड के लिए जाम हो सकता है या पूरी तरह अटक सकता है, और किसी सर्वर पर यह ReDoS नाम का एक denial-of-service वेक्टर बन जाता है।
बचाव संरचनात्मक होते हैं। एक क्वांटिफ़ायर को किसी दूसरे के भीतर नेस्ट करने से बचें जो एक ही चीज़ मैच कर सकता हो, किसी उदार डॉट के बजाय अधिक विशिष्ट कैरेक्टर क्लास को तरजीह दें ताकि हर चरण के पास इनपुट खपाने का केवल एक ही तरीका हो, और जब संभव हो पैटर्न को ऐंकर करें। अगर आपको कोई जोखिम भरा पैटर्न जाँचना ही है, तो पहले उसे यहाँ किसी यथार्थपूर्ण सबसे-बुरी-स्थिति वाली स्ट्रिंग के विरुद्ध जाँचें, जहाँ एक बेकाबू पैटर्न आपको किसी production आउटेज के बजाय एक ब्राउज़र टैब की कीमत चुकाता है।
रिप्लेसमेंट का सुरक्षित पूर्वावलोकन
खोज-और-बदलें ही वह जगह है जहाँ regex रोज़ अपनी कीमत वसूल करता है, और रिप्लेसमेंट फ़ील्ड आपको किसी भी जगह बदलाव लागू करने से पहले परिणाम का पूर्वावलोकन करने देती है। रिप्लेसमेंट में अपने कैप्चर ग्रुप को dollar चिह्न और ग्रुप नंबर के साथ संदर्भित करें — dollar-one वह डालता है जो पहले ग्रुप ने मैच किया — ताकि आप किसी तारीख का क्रम बदल सकें, किसी नाम को फिर से फ़ॉर्मैट कर सकें, या मैच को मार्कअप में लपेट सकें। याद रखें कि global फ़्लैग के बिना केवल पहला मैच बदला जाता है; हर उपस्थिति को बदलने के लिए global चालू करें।
सब कुछ आपके ब्राउज़र में नेटिव इंजन का इस्तेमाल करके स्थानीय रूप से चलता है, इसलिए आप जो कुछ भी पेस्ट करते हैं — लॉग लाइनें, सोर्स कोड, ग्राहक डेटा — वह न तो अपलोड होता है, न लॉग होता है, न संग्रहीत किया जाता है। यह परीक्षक को किसी असल-दुनिया के नमूने पर तब तक दोहराते रहने की एक सुरक्षित जगह बनाता है जब तक मैच और रिप्लेसमेंट आउटपुट दोनों बिल्कुल सही न हो जाएँ, फिर पूरे हुए पैटर्न को आत्मविश्वास के साथ अपने कोड में कॉपी कर लें।
अक्सर पूछे जाने वाले प्रश्न
रेगुलर एक्सप्रेशन क्या है?
यह परीक्षक किस regex फ्लेवर का उपयोग करता है?
फ़्लैग का क्या मतलब है?
कैप्चर ग्रुप कैसे काम करते हैं?
क्या मेरा डेटा किसी सर्वर पर भेजा जाता है?
संबंधित टूल्स
इन उपयोगी टूल्स के साथ आगे बढ़ें