Regex टेस्टर
नमूना टेक्स्ट पर रेगुलर एक्सप्रेशन आज़माएं और हर मैच, उसके कैप्चर ग्रुप और रिप्लेस का नतीजा देखें।
पूरी तरह आपके ब्राउज़र में चलता है
| # | जगह | मैच | ग्रुप |
|---|
JavaScript (ECMAScript) regex सिंटैक्स, जैसा आपका ब्राउज़र सपोर्ट करता है। टेक्स्ट 5 MB तक; पहले 1,000 मैच सूचीबद्ध और हाइलाइट होते हैं। जो पैटर्न 2 सेकंड से ज़्यादा चले, उसे रोक दिया जाता है।
रेगुलर एक्सप्रेशन कैसे टेस्ट करें
- स्लैश के बीच पैटर्न टाइप करें और ज़रूरी फ़्लैग पर टिक करें, जैसे सभी मैच के लिए
gया अक्षरों का केस अनदेखा करने के लिएi। - अपना टेस्ट टेक्स्ट पेस्ट करें। टाइप करते ही मैच हाइलाइट होते हैं, और टेबल हर मैच को उसकी जगह और कैप्चर ग्रुप के साथ दिखाती है।
- बदलाव जाँचने के लिए
$2-$1या$<year>जैसा रिप्लेसमेंट टाइप करें और नतीजा उसके नीचे पढ़ें।
पैटर्न को सुरक्षित तरीके से टेस्ट करना
टेस्टर आपके पैटर्न और फ़्लैग से JavaScript RegExp बनाता है और उसे बैकग्राउंड worker में चलाता है, यानी वही इंजन जो इस ब्राउज़र में आपका कोड इस्तेमाल करेगा। मैच अपनी शुरुआती जगह और हर कैप्चर ग्रुप के साथ लौटते हैं, और पेज उन्हें आपके टेक्स्ट पर बारी-बारी की हाइलाइट के साथ दिखाता है ताकि पास-पास के मैच अलग दिखें। खाली मैच, जैसा \b या a* दे सकता है, पतली पट्टी के रूप में दिखता है।
पैटर्न को worker में चलाना इसलिए मायने रखता है कि रेगुलर एक्सप्रेशन घातीय समय ले सकता है। अगर पैटर्न 2 सेकंड बाद भी चल रहा हो, तो worker रोक दिया जाता है और आपको जमे हुए टैब की जगह एक संदेश मिलता है। यही सुरक्षा खोजें और बदलें की भी रक्षा करती है।
जगहें UTF-16 कोड यूनिट में गिनी जाती हैं, जैसे JavaScript स्ट्रिंग गिनती हैं: इमोजी या basic plane से बाहर का कोई वर्ण दो लेता है। सूची पहले 1,000 मैच दिखाती है; उसके ऊपर की कुल गिनती में हर मैच शामिल है।
सुझाव
- पैटर्न चलने लगे तो उसे पूरे दस्तावेज़ पर खोजें और बदलें से लगाएं।
- रिप्लेस से पहले और बाद के टेक्स्ट की तुलना टेक्स्ट की तुलना करें से करें।
- लॉग में तारीख़ें मैच कर रहे हैं? टाइमस्टैम्प को पढ़ने लायक समय में Unix टाइमस्टैम्प कन्वर्टर से बदलें।
अक्सर पूछे जाने वाले सवाल
यह कौन-सा regex फ़्लेवर इस्तेमाल करता है?
JavaScript वाला, जिसे आपके अपने ब्राउज़र का इंजन चलाता है, इसलिए नतीजे वही हैं जो आपके ब्राउज़र या Node.js में RegExp देता है। रोज़मर्रा का ज़्यादातर सिंटैक्स PCRE, Python और Java के साथ साझा है, पर कुछ सुविधाएं अलग हैं: possessive quantifier और atomic group सपोर्ट नहीं होते, और lookbehind, named group और v फ़्लैग के लिए मौजूदा ब्राउज़र चाहिए।
सिर्फ़ एक मैच क्यों दिख रहा है?
g (global) फ़्लैग के बिना JavaScript regex सिर्फ़ पहला मैच ढूँढता है, और replace सिर्फ़ पहली जगह बदलता है। सभी ढूँढने के लिए g पर टिक करें। टेस्टर भाषा का ठीक पालन करता है, इसलिए जो आप देखते हैं वही आपका कोड करेगा।
फ़्लैग क्या करते हैं?
g सभी मैच ढूँढता है, i केस अनदेखा करता है, m ^ और $ को लाइन ब्रेक पर मैच कराता है, s . को लाइन ब्रेक से मैच होने देता है, u पूरा Unicode हैंडलिंग चालू करता है, v सेट ऑपरेशन वाला नया Unicode मोड है, y (sticky) सिर्फ़ मौजूदा स्थिति पर मैच करता है, और d हर ग्रुप की शुरुआत दर्ज करता है, जिसे टेस्टर ग्रुप की जगह के लिए वैसे भी इस्तेमाल करता है।
रिप्लेसमेंट में ग्रुप कैसे इस्तेमाल करूँ?
$1, $2 आदि क्रमांकित ग्रुप डालते हैं, $<name> नामित ग्रुप डालता है, $& पूरा मैच डालता है, $` और $' उसके पहले और बाद का टेक्स्ट डालते हैं, और $$ अक्षरशः डॉलर चिह्न लिखता है।
मेरा पैटर्न "took too long" के साथ क्यों रुक गया?
कुछ पैटर्न, जैसे a की लंबी कतार पर ^(a+)+$ जो उस तरह खत्म नहीं होती जैसी उम्मीद है, इंजन को मैच करने के बेहद ज़्यादा तरीके आज़माने पर मजबूर कर देते हैं। इसे catastrophic backtracking कहते हैं। टेस्टर हर पैटर्न को बैकग्राउंड worker में चलाता है और 2 सेकंड बाद रोक देता है ताकि पेज इस्तेमाल लायक रहे। (a+)+ जैसे नेस्टेड दोहराव को a+ के रूप में दोबारा लिखें।
क्या मेरा टेक्स्ट कहीं भेजा जाता है?
नहीं। पैटर्न और टेक्स्ट आपके ब्राउज़र में रहते हैं; मैचिंग आपके डिवाइस पर होती है और कुछ भी अपलोड या सेव नहीं होता।