रेगुलर एक्सप्रेशन क्या है? एक संपूर्ण व्याख्या
त्वरित जवाब
Regular expression string का समुच्चय वर्णन करने वाला पैटर्न है। यह literal character और metacharacter (*, +, ?, ., ^, $, [], (), {}, |, \) उपयोग करता है। Regex validation, search, extraction और replacement के लिए। हमारे मुफ्त Regex Tester से पैटर्न टेक्स्ट पर टेस्ट करें।
परिचय
Regular expression (regex या regexp) अक्षरों का अनुक्रम है जो search पैटर्न परिभाषित करता है। इस पैटर्न का उपयोग string-search algorithm टेक्स्ट खोजने, match करने या replace करने में करते हैं। Regex की उत्पत्ति 1950 के दशक के formele-taaltheorie (Stephen Kleene) में हुई और 1970 के दशक में Unix टेक्स्ट टूल (grep, sed, awk) में अपनाया गया। आज regex लगभग हर प्रोग्रामिंग भाषा और editor में है।
क्रमशः
-
शाब्दिक और रूपक को समझें
शाब्दिक अक्षर (ए, बी, 1, @) आपस में मेल खाते हैं। मेटाकैरेक्टर के विशेष अर्थ होते हैं: . किसी भी वर्ण से मेल खाता है, * का अर्थ है शून्य या अधिक, + का अर्थ है एक या अधिक, ? मतलब शून्य या एक, ^ मैच शुरू, $ मैच खत्म।
-
चरित्र वर्ग सीखें
वर्गाकार कोष्ठक [] एक वर्ण वर्ग को परिभाषित करते हैं - [aeiou] किसी भी स्वर से मेल खाता है, [0-9] किसी भी अंक से मेल खाता है, [^0-9] किसी भी गैर-अंक से मेल खाता है। आशुलिपि वर्ग: \d (अंक), \w (शब्द वर्ण), \s (व्हाट्सएप), और उनके अपरकेस निषेध।
-
क्वांटिफायर का प्रयोग करें
क्वांटिफ़ायर निर्दिष्ट करते हैं कि एक पैटर्न कितनी बार दोहराया जाता है: * (0+), + (1+), ? (0 या 1), {n} (बिल्कुल n), {n,} (n+), {n,m} (n से m)। डिफ़ॉल्ट रूप से लालची; जोड़ना ? आलसी मिलान के लिए (जैसे, *?)।
-
समूह और लंगर
कोष्ठक () कैप्चर समूह बनाते हैं। प्रत्यावर्तन | दोनों तरफ से मेल खाता है (बिल्ली|कुत्ता)। एंकर ^ और $ स्ट्रिंग के प्रारंभ और अंत से मेल खाते हैं। सरल पैटर्न से जटिल पैटर्न बनाने के लिए इनका उपयोग करें।
उदाहरण
ईमेल जैसे पैटर्न का मिलान करें
इनपुट: Pattern: [a-z]+@[a-z]+\.[a-z]+
उत्पादन: मिलान: alice@example.com, bob@test.org
फ़ोन नंबर प्रारूप का मिलान करें
इनपुट: Pattern: \d{3}-\d{3}-\d{4}
उत्पादन: Matches: 555-123-4567
कुंजी-मूल्य जोड़े निकालें
इनपुट: Pattern: (\w+)=(\w+)
उत्पादन: Matches 'key=value' with group 1 as key, group 2 as value
सामान्य समस्या
- लालची मिलान अति-उपभोग —.* जितना संभव हो उतना मेल खाता है। उपयोग ।*? सबसे छोटा मिलान खोजने के लिए आलसी मिलान के लिए।
- विशेष वर्णों से बचना भूल जाना -., *, +, ?, आदि विशेष हैं। उनका शाब्दिक मिलान करने के लिए \ का उपयोग करें (उदाहरण के लिए, \. शाब्दिक बिंदु से मेल खाता है)।
- विनाशकारी बैकट्रैकिंग - नेस्टेड क्वांटिफायर वाले पैटर्न (उदाहरण के लिए, (ए+)+) कुछ इनपुट पर तेजी से समय ले सकते हैं, जिससे ReDoS हमले हो सकते हैं।
- ओवर-मैचिंग - एंकर (^ और $) के बिना, एक पैटर्न कहीं भी मेल खाता है। संपूर्ण स्ट्रिंग से मिलान करने के लिए ^...$ का उपयोग करें।
सुझावों
- सरल शुरुआत करें और धीरे-धीरे जटिलताएँ जोड़ें—एक जटिल रेगेक्स को एक साथ डीबग करना बहुत कठिन है।
- नमूना पाठ के विरुद्ध पैटर्न के साथ प्रयोग करने के लिए रेगेक्स परीक्षक का उपयोग करें - वास्तविक समय में हाइलाइट किए गए मिलान देखें।
- विस्तारित मोड (कुछ इंजनों में/x फ़्लैग) का उपयोग करके जटिल रेगेक्स पर टिप्पणी करें या उन्हें नामित भागों में विभाजित करें।
- अपने ब्राउज़र में तुरंत पैटर्न का परीक्षण करने के लिए हमारे रेगेक्स परीक्षक का उपयोग करें - कोई साइनअप नहीं, पूरी तरह से निजी।