c regex tutorial what is c regular expression
यह C # Regex ट्यूटोरियल बताता है कि C # में एक रेगुलर एक्सप्रेशन क्या है, इसके सिंटैक्स, Rexx क्लास के तरीके और उदाहरणों की मदद से इन तरीकों का उपयोग कैसे करें:
C # में रेग्युलर एक्सप्रेशन का उपयोग किसी विशेष कैरेक्टर पैटर्न के मिलान के लिए किया जाता है। जब भी उपयोगकर्ता को कुछ दोहराए जाने वाले पैटर्न को खोजने या डेटा सत्यापन करने या डेटा स्वरूपण की जांच के लिए भी नियमित अभिव्यक्तियों का उपयोग किया जाता है।
RegEx का उपयोग यह जानने के लिए किया जाता है कि किसी स्ट्रिंग में दिए गए वर्ण पैटर्न के साथ मेल खाता है या नहीं। एक रेगेक्स मुख्य रूप से एक चरित्र अनुक्रम है जो एक पैटर्न को दर्शाता है।
एक पैटर्न संख्या, चरित्र या सभी के संयोजन से लेकर कुछ भी हो सकता है। रेगेक्स को व्यापक रूप से सत्यापन के लिए उपयोग किया जाता है। तार जोड़ने या मिलान करने, उदाहरण के लिए, यह पता लगाना कि क्या एक स्ट्रिंग मुद्रा प्रारूप, फोन नंबर या दिनांक प्रारूप से मेल खाती है।
=> आसान सी # प्रशिक्षण श्रृंखला के माध्यम से पढ़ें।
बाकी वेब सेवाएं परीक्षण साक्षात्कार प्रश्न
आप क्या सीखेंगे:
रेगेक्स क्लास सी # में
रेगेक्स ऑपरेशन को करने के लिए रेगेक्स क्लास का उपयोग C # में किया जाता है। इसमें कई अलग-अलग विधियाँ सम्मिलित हैं जिनका उपयोग रेगेक्स से संबंधित अलग-अलग ऑपरेशन करने के लिए किया जा सकता है
इसका उपयोग किसी विशेष वर्ण अनुक्रम को खोजने के लिए बड़े पाठ को पार्स करने के लिए किया जा सकता है, जो कि मैच को निष्पादित करने के लिए, चरित्र अनुक्रम को विभाजित करने के लिए उपयोग किया जा सकता है या उपयोग किया जा सकता है।
रेपेक्स वर्ग नेमस्पेस के अंदर मौजूद है; System.Text.RegularExpression। वर्ग एक चरित्र अनुक्रम के रूप में एक पैरामीटर के रूप में एक स्ट्रिंग को स्वीकार करता है।
सी # रेगेक्स तरीके
IsMatch
रेगेक्स वर्ग में सबसे सरल और सबसे उपयोगी विधि इस्मैच विधि है। विभिन्न मापदंडों के आधार पर वर्णों के मिलान के लिए इस पद्धति में अलग-अलग अधिभार हैं।
सबसे सरल है IsMatch (स्ट्रिंग पाठ) , यह विधि उपयोगकर्ता को एक स्ट्रिंग के मिलान के लिए एक चरित्र अनुक्रम प्रदान करने की अनुमति देती है।
दूसरा ओवरलोड IsMatch (स्ट्रिंग पाठ, इंट स्थिति)। यह विधि एक बूलियन मान लौटाती है और दो (स्ट्रिंग और पूर्णांक) पैरामीटर लेती है। पैरामीटर में निर्दिष्ट स्ट्रिंग टेक्स्ट मूल रूप से एक रेगेक्स कंस्ट्रक्टर है जो पूर्णांक पैरामीटर द्वारा निर्दिष्ट प्रारंभ स्थिति से वर्ण अनुक्रम के साथ मेल खाएगा।
इस प्रकार, यह विधि किसी दिए गए स्ट्रिंग में पूर्णांक पैरामीटर द्वारा प्रदान की गई स्थिति में स्ट्रिंग इनपुट से मेल खाने की कोशिश करेगी।
तीसरा अधिभार, इस्मैच (स्ट्रिंग पाठ, स्ट्रिंग पैटर्न) दो मापदंडों को स्वीकार करता है और एक बूलियन मूल्य देता है। पहला पैरामीटर वह पाठ है जिसमें उपयोगकर्ता को एक पैटर्न खोजने की आवश्यकता होती है और अगला पैरामीटर उस पैटर्न को प्रदान करता है जिसे उपयोगकर्ता दिए गए पाठ में खोज रहा है।
अनुशंसित पढ़ना = >> MySQL में पैटर्न का मिलान
बदलें (स्ट्रिंग पाठ, स्ट्रिंग प्रतिस्थापनटैक्स)
प्रतिस्थापित पद्धति दो मापदंडों को स्वीकार करती है और एक स्ट्रिंग मान लौटाती है। पहला पैरामीटर चरित्र अनुक्रम या रेगेक्स है जिसे आप मैच के लिए उपयोग करना चाहते हैं और दूसरा रीजेक्स का प्रतिस्थापन है।
विधि दिए गए पाठ का एक मैच ढूंढकर काम करती है और फिर प्रतिस्थापित करती है कि उपयोगकर्ता द्वारा प्रदान किए गए प्रतिस्थापन पाठ के साथ। विधि हस्ताक्षर है सार्वजनिक स्ट्रिंग बदलें (स्ट्रिंग पाठ, स्ट्रिंग प्रतिस्थापन)
सार्वजनिक स्ट्रिंग () स्प्लिट (स्ट्रिंग पाठ)
रेगेक्स वर्ग से विभाजित विधि स्ट्रिंग इनपुट को एक पैरामीटर के रूप में स्वीकार करता है और एक सरणी देता है जिसमें सबस्ट्रिंग होता है। विधि में पारित पैरामीटर स्ट्रिंग है जिसे विभाजित करने की आवश्यकता है।
विधि स्ट्रिंग में मिलान इनपुट पैटर्न को ढूंढती है और एक बार जब यह किसी भी मिलान पैटर्न की पहचान करता है, तो यह उस स्थान पर स्ट्रिंग को विभाजित करता है जिसमें प्रत्येक मिलान पैटर्न के साथ ब्रेकिंग पॉइंट होता है। विधि फिर सभी सबस्ट्रिंग युक्त एक सरणी देता है।
रेगेक्स सी # विधियों का उपयोग
आइए एक सरल प्रोग्राम लिखकर इन विधियों के उपयोग पर एक नज़र डालें।
public static void Main(string() args) { string patternText = 'Hello'; Regex reg = new Regex(patternText); //IsMatch(string input) Console.WriteLine(reg.IsMatch('Hello World')); //IsMatch(string input, int index) Console.WriteLine(reg.IsMatch('Hello', 0)); //IsMatch(string input, string pattern) Console.WriteLine(Regex.IsMatch('Hello World', patternText)); //Replace(string input, string replacement) Console.WriteLine(reg.Replace('Hello World', 'Replace')); //Split(string input, string pattern) string() arr = Regex.Split('Hello_World_Today', '_'); foreach(string subStr in arr) { Console.WriteLine('{0}', subStr); } }
उपरोक्त कार्यक्रम का आउटपुट
सच
सच
सच
विश्व को प्रतिस्थापित करें
नमस्ते
विश्व
आज
उपरोक्त कोड के लिए स्पष्टीकरण:
कार्यक्रम की शुरुआत में, हमने एक ऑब्जेक्ट बनाया है और उस पैटर्न के लिए जिसका उपयोग हम बाद के स्ट्रिंग इनपुट में मेल खाने वाले कोड के लिए करेंगे, हमने शुरुआत में चीजों को सरल रखने के लिए टेक्स्ट फॉर्मेटिंग का उपयोग किया है लेकिन यदि आप सहज हैं नियमित अभिव्यक्ति पैटर्न का उपयोग करना शुरू करें। (इस ट्यूटोरियल में आगे बढ़ने पर हम नियमित अभिव्यक्ति पैटर्न पर विस्तार से चर्चा करेंगे)
फिर, हम उस स्ट्रिंग को इनपुट करने के लिए मैच स्ट्रिंग का उपयोग करेंगे जिसे हमने इनपुट स्ट्रिंग के साथ निर्दिष्ट ऑब्जेक्ट के रूप में घोषित किया है और यदि यह मेल खाता है तो यह गलत वापस आएगा।
अगली विधि जिसका हमने उपयोग किया वह है IsMethod (स्ट्रिंग इनपुट, इंट इंडेक्स)। यह विधि दो-पैरामीटर को स्वीकार करती है, और यहां हम इनपुट स्ट्रिंग और इंडेक्स प्रदान करते हैं जहां से मैच शुरू करना है। उदाहरण के लिए, यहां हम इनपुट स्ट्रिंग की शुरुआत से मिलान शुरू करना चाहते थे।
फिर हमने इस्मैच (स्ट्रिंग इनपुट, स्ट्रिंग पैटर्न) के उपयोग का प्रदर्शन किया। यहाँ हमने इनपुट स्ट्रिंग प्रदान की है तब हम यह जानना चाहते थे कि पैटर्न टेक्स्ट इनपुट में मौजूद है या नहीं। यदि इसका वर्तमान है तो यह सच हो जाएगा (जैसा कि हमारे मामले में है) अन्यथा यह झूठे वापस आ जाएगा।
एक और तरीका जिसके बारे में हमने चर्चा की, वह बदल दिया गया। यह विधि उन कार्यक्रमों में काफी उपयोगी है जहां आप इनपुट डेटा में बदलाव करना चाहते हैं या मौजूदा डेटा के प्रारूप को बदलना चाहते हैं।
यहां हम दो पैरामीटर प्रदान करते हैं, पहला है इनपुट स्ट्रिंग और दूसरा है वह स्ट्रिंग जो पिछले स्ट्रिंग को बदलने के लिए उपयोग किया जा सकता है। यह विधि regex ऑब्जेक्ट में परिभाषित पैटर्न का भी उपयोग करती है जिसे हमने पहले परिभाषित किया था।
एक और महत्वपूर्ण विधि जिसका हमने उपयोग किया, वह विभाजित है। इस पद्धति का उपयोग कुछ आवर्ती पैटर्न के आधार पर दिए गए स्ट्रिंग को विभाजित करने के लिए किया जाता है। यहाँ, हमने “Hello_World_Today” एक स्ट्रिंग प्रदान की है।
मान लें कि हम दिए गए स्ट्रिंग से अंडरस्कोर निकालना चाहते हैं और सबस्ट्रिंग प्राप्त करना चाहते हैं। इसके लिए, हम इनपुट पैरामीटर को निर्दिष्ट करते हैं और फिर हम एक विभाजन बिंदु के रूप में उपयोग करने के लिए आवश्यक पैटर्न देते हैं। विधि एक सरणी देता है और हम सभी स्ट्रिंग्स को पुनः प्राप्त करने के लिए एक साधारण लूप का उपयोग कर सकते हैं।
नियमित अभिव्यक्ति सिंटैक्स
कई अलग-अलग वाक्यविन्यास हैं जैसे कि विशेष वर्ण, क्वांटिफायर, चरित्र वर्ग आदि, जिनका उपयोग किसी दिए गए इनपुट से एक निश्चित पैटर्न से मेल खाने के लिए किया जा सकता है।
ट्यूटोरियल के इस भाग में, हम regex द्वारा प्रस्तुत सिंटैक्स में गहराई से डाइविंग करेंगे और उनका उपयोग करके कुछ वास्तविक जीवन परिदृश्यों को हल करने का प्रयास करेंगे। आगे बढ़ने से पहले, सुनिश्चित करें कि आपने regex के मूल विचार और regex वर्ग के भीतर उपलब्ध विभिन्न तरीकों को प्राप्त कर लिया है।
विशेष वर्ण
एक regex में विशेष वर्णों को एक पैटर्न में कई अलग-अलग अर्थ देने के लिए उपयोग किया जाता है। अब हम Regex.3 में व्यापक रूप से उपयोग किए जाने वाले कुछ विशेष वर्णों और उनके अर्थों को देखेंगे
विशेष वर्ण | जिसका अर्थ है |
---|---|
w और W | लोअर केस eric w ’का उपयोग अल्फ़ान्यूमेरिक / अंडरस्कोर वर्णों के मिलान के लिए किया जाता है और ऊपरी केस’ W ’का उपयोग गैर-शब्द वर्णों से मिलान करने के लिए किया जाता है। |
^ | यह सबसे व्यापक रूप से इस्तेमाल किया वाक्यविन्यास में से एक है। यह इनपुट पाठ की शुरुआत से मेल खाने के बाद प्रारंभ, शब्द या पैटर्न को दर्शाता है। |
$ | यह संकेत स्ट्रिंग के अंत से शब्दों के मिलान के लिए उपयोग किया जाता है। इस प्रतीक से पहले अंकित शब्द / पैटर्न स्ट्रिंग के अंत में मौजूद शब्दों से मेल खाएंगे। |
। (डॉट) | एक बार होने वाले स्ट्रिंग में किसी एकल वर्ण के मिलान के लिए डॉट का उपयोग किया जाता है। |
n | यह एक नई लाइन के लिए उपयोग किया जाता है। |
d और D | निचले मामले and डी 'का उपयोग अंक चरित्र से मेल खाने के लिए किया जाता है और ऊपरी अंक ‘डी' का उपयोग गैर-अंकीय वर्णों के मिलान के लिए किया जाता है। |
s और S | लोअर केस 's' का उपयोग व्हाइट स्पेस से मिलान करने के लिए किया जाता है और अपर केस 'S' का उपयोग नॉन-व्हाइट स्पेस से मिलान करने के लिए किया जाता है। |
क्वांटिफायर सिंटेक्स
क्वांटिफायर सिंटैक्स का उपयोग मिलान मानदंडों को गिनने या निर्धारित करने के लिए किया जाता है। उदाहरण के लिए, यदि आप जांचना चाहते हैं कि क्या किसी विशेष स्ट्रिंग में एक या अधिक बार वर्णमाला है। आइए नियमित अभिव्यक्ति में कुछ सामान्य रूप से उपयोग किए जाने वाले क्वांटिफायर पर एक नज़र डालें।
क्वांटिफायर सिंटेक्स | जिसका अर्थ है |
---|---|
* | इस प्रतीक का उपयोग पूर्ववर्ती चरित्र से मेल खाने के लिए किया जाता है। |
+ | इस चिन्ह का उपयोग एक पंक्ति में एक या अधिक वर्णों के मिलान के लिए किया जाता है। |
{n} | घुंघराले ब्रेस के अंदर संख्यात्मक अंक का उपयोग कर्ली ब्रेसिज़ के अंदर संख्यात्मक द्वारा परिभाषित पूर्ववर्ती वर्ण की संख्या से मेल खाने के लिए किया जाता है। |
{n,} | घुंघराले ब्रेसिज़ के अंदर का अंक और इस प्रतीक का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि यह कम से कम n (यानी ब्रेसिज़ के अंदर अंक मूल्य) से मेल खाता है। |
{n, m} | इस चिन्ह का प्रयोग पूर्ववर्ती वर्ण से n संख्या से कई बार m संख्या में मिलान के लिए किया जाता है। |
? | यह प्रतीक पूर्ववर्ती वर्णों को वैकल्पिक के रूप में मेल खाता है। |
चरित्र वर्ग
चरित्र वर्ग को चरित्र सेट के रूप में भी जाना जाता है, और इसका उपयोग रेगेक्स इंजन को कई पात्रों में से एकल मैच देखने के लिए कहने के लिए किया जाता है। एक वर्ण वर्ग केवल एक वर्ण से मेल खाएगा और वर्ण सेट के अंदर संलग्न वर्णों का क्रम मायने नहीं रखता है।
चरित्र वर्ग | जिसका अर्थ है |
---|---|
(रेंज) | वर्ग ब्रैकेट प्रतीक का उपयोग वर्णों की एक श्रृंखला के लिए किया जाता है। उदाहरण के लिए, हम इसका उपयोग किसी वर्ण के सीमा में 'a' से 'z' तक ब्रैकेट के अंदर की सीमा को संलग्न करके उपयोग कर सकते हैं जैसे (a-z) या, हम (1-9) को दर्शाते हुए संख्यात्मक '1' से '9' तक भी मेल कर सकते हैं |
(^ रेंज) | यह नकारात्मक चरित्र वर्ग को दर्शाता है। इसका उपयोग किसी भी चीज से मेल खाने के लिए किया जाता है, न कि ब्रैकेट के अंदर दी गई सीमा में। |
_ | इसका उपयोग विशेष वर्णों से मेल खाने के लिए किया जाता है, जिनके अपने रेगेक्स प्रतीक हो सकते हैं। स्लैश का उपयोग उनके शाब्दिक रूप में विशेष वर्णों के मिलान के लिए किया जाता है। |
समूहन
गोल कोष्ठक या कोष्ठक का उपयोग नियमित अभिव्यक्ति के एक भाग को एक साथ करने के लिए किया जा सकता है। यह उपयोगकर्ता को अभिव्यक्ति के साथ या तो एक क्वांटिफायर जोड़ने की अनुमति देता है।
समूहन | जिसका अर्थ है |
---|---|
(समूह अभिव्यक्ति) | गोल कोष्ठक का उपयोग अभिव्यक्ति को समूहीकृत करने के लिए किया जाता है। |
| | | उदाहरण के लिए विकल्प (a | b) का उपयोग करने के लिए राउंड ब्रैकेट के अंदर ऑपरेटर का उपयोग किया जाता है। |
सी # नियमित अभिव्यक्ति उदाहरण
पिछले खंड में, हमने नियमित अभिव्यक्ति प्रतीकों के बारे में सीखा, इस खंड में हम नियमित अभिव्यक्ति में विभिन्न प्रतीकों के उपयोग और संयोजन के बारे में विस्तार से देखेंगे जिसमें उनका उपयोग विभिन्न अभिव्यक्तियों के मिलान के लिए किया जा सकता है।
इस ट्यूटोरियल में, हम कुछ सबसे व्यापक रूप से सामना किए जाने वाले वास्तविक जीवन के परिदृश्यों पर चर्चा करेंगे जिन्हें आप उपयोगकर्ता के इनपुट प्राप्त करने के लिए कुछ एप्लिकेशन पर या एक साधारण प्रोग्राम में काम करते समय एक डेवलपर के रूप में सामना कर सकते हैं।
वास्तविक जीवन परिदृश्यों के साथ नियमित अभिव्यक्ति उदाहरण
आइए कुछ वास्तविक समय के उदाहरणों का उपयोग करके नियमित अभिव्यक्तियों के बारे में अधिक जानें।
परिदृश्य 1: यदि इनपुट स्ट्रिंग 6 अंक केस-असंवेदनशील वर्णमाला वर्ण से बना है, तो मान्य करें।
नियमित अभिव्यक्ति के लिए सबसे आम परिदृश्य एक दिए गए शब्द को ढूंढना और मिलान करना है। उदाहरण के लिए, मान लें कि मैं उपयोगकर्ता से एक यादृच्छिक वर्णमाला स्ट्रिंग चाहता हूं और यह इनपुट ठीक 6 अंक लंबा होना चाहिए।
यह सत्यापित करने के लिए कि हम एक सरल नियमित अभिव्यक्ति का उपयोग कर सकते हैं। नियमित अभिव्यक्ति लेखन और उपयोग को बेहतर तरीके से समझने के लिए एक कार्यक्रम लिखें।
public static void Main(string() args) { string patternText = @'^(a-zA-Z){6}$'; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch('Helios')); //When pattern doesnt match Console.WriteLine(reg.IsMatch('Helo')); }
उत्पादन
सच
असत्य
व्याख्या
इस उदाहरण में, हम एक इनपुट स्ट्रिंग को मान्य करने की कोशिश कर रहे हैं, यह जांचने के लिए कि उसमें छह-अंकीय वर्णमाला वर्ण हैं। पात्र निचले और ऊपरी दोनों मामलों में हो सकते हैं, इसलिए हमें इसका भी ध्यान रखना चाहिए।
तो, यहाँ हमने एक नियमित अभिव्यक्ति पैटर्न को 'patternText' में परिभाषित किया और फिर इसे रेगेक्स ऑब्जेक्ट में पास किया। अब, कोड की अगली लाइनें बहुत सरल हैं, हमने नियमित अभिव्यक्ति और इनपुट स्ट्रिंग की तुलना करने के लिए IsMatch विधि का उपयोग किया।
आइए अब हम उस नियमित अभिव्यक्ति पर एक नज़र डालें जो हमने तैयार की है। अभिव्यक्ति (^ (a-zA-Z) {6} $) 4 विभिन्न भागों से बनी है। '^', '(A-zA-Z)', '{6}' और '$'। दूसरा भाग मिलान वर्णों को दर्शाता है, जिसका उपयोग अभिव्यक्ति मिलान, निचले मामले के लिए 'ए-जेड' और ऊपरी केस पत्रों के लिए 'ए-जेड' के लिए किया जाता है।
पहला भाग चरित्र '^' सुनिश्चित करता है कि स्ट्रिंग दूसरे भाग में परिभाषित पैटर्न के साथ शुरू होती है, अर्थात् निचले और ऊपरी मामले के अक्षर।
तीसरे भाग में घुंघराले ब्रेसिज़ स्ट्रिंग में वर्णों की संख्या निर्धारित करते हैं जिन्हें परिभाषित पैटर्न यानि 6 द्वारा इस मामले में पहचाना जा सकता है और '$' प्रतीक यह सुनिश्चित करता है कि यह दूसरे भाग में परिभाषित पैटर्न के साथ समाप्त होता है।
^ (a-zA-Z) {6} $
परिदृश्य 2: उस शब्द को मान्य करने के लिए नियमित अभिव्यक्ति का उपयोग करें जो 'सुपर' से शुरू होता है और उसके बाद श्वेत स्थान होता है यानी यदि वाक्य के शुरू होने पर 'सुपर' मौजूद हो तो इसे मान्य करना होगा।
मान लें कि हम कुछ उपयोगकर्ता इनपुट पढ़ रहे हैं और यह सुनिश्चित करने की आवश्यकता है कि उपयोगकर्ता हमेशा किसी विशेष शब्द, संख्या, या वर्णमाला के साथ अपना वाक्य शुरू करता है। यह एक सरल नियमित अभिव्यक्ति का उपयोग करके काफी आसानी से प्राप्त किया जा सकता है।
linux दो फाइलों में अंतर खोजता है
आइए एक नमूना कार्यक्रम को देखें और फिर इस अभिव्यक्ति को लिखने के तरीके पर विस्तार से चर्चा करें।
public static void Main(string() args) { string patternText = @'^Supers'; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch('Super man')); //When pattern doesnt match Console.WriteLine(reg.IsMatch('Superhero')); }
उत्पादन
सच
असत्य
व्याख्या
इस उदाहरण में, हमने एक समान कोड सेटअप का उपयोग किया था जैसा कि हमने पहले एक में किया था। इस परिदृश्य में नियमित अभिव्यक्ति पैटर्न को 'सुपर' से शुरू होने वाले शब्दों या वाक्यों के संयोजन के साथ मेल खाना चाहिए।
^ सुपर
इसलिए, जैसा कि हम शब्द श्रृंखला की शुरुआत से मेल खाना चाहते हैं, हम '^' प्रतीक लगाकर शुरू करेंगे, फिर उस पैटर्न को देंगे जिसे हम मैच करना चाहते हैं, इस मामले में 'सुपर'। अब हमने '^ सुपर' जो पैटर्न बनाया है, वह सुपर, यहां तक कि सुपरमैन या अलौकिक के सभी मूल्यों के साथ मेल खा सकता है, लेकिन हम केवल 'सुपर' शब्द नहीं चाहते हैं।
इसका मतलब है कि शब्द के अंत को चिह्नित करने के लिए शब्द के बाद सफेद स्थान होना चाहिए और दूसरे शब्द की शुरुआत। ऐसा करने के लिए हम पैटर्न में '' जोड़ देंगे और इस तरह हमारा अंतिम पैटर्न बना देंगे
^ सुपर _
परिदृश्य 3: छवि फ़ाइल प्रकार के एक्सटेंशन के साथ मान्य फ़ाइल नाम खोजने के लिए नियमित अभिव्यक्ति का उपयोग करें।
एक और महत्वपूर्ण वास्तविक समय परिदृश्य जो डेवलपर्स अक्सर सामना करते हैं, फ़ाइल प्रकारों की मान्यता है। मान लें कि हमारे पास UI में एक अपलोड बटन है, जो केवल छवि फ़ाइल प्रकार के एक्सटेंशन को स्वीकार कर सकता है।
हमें उपयोगकर्ता अपलोड फ़ाइल को मान्य करने और उसे गलत फ़ाइल प्रारूप अपलोड करने की स्थिति में सूचित करने की आवश्यकता है। रेगुलर एक्सप्रेशन का उपयोग करके इसे आसानी से प्राप्त किया जा सकता है।
नीचे यह जाँचने के लिए एक सरल कार्यक्रम है।
public static void Main(string() args) jpeg
उत्पादन
सच
सच
सच
असत्य
असत्य
व्याख्या
यहां हमें एक फ़ाइल नाम से मिलान करना होगा। एक मान्य फ़ाइल नाम तीन भागों से बना है ( फ़ाइल का नाम +। + फ़ाइल एक्सटेंशन ) का है। हमें तीनों भागों का मिलान करने के लिए एक नियमित अभिव्यक्ति बनाने की आवश्यकता है। आइए पहले भाग यानी फ़ाइल के नाम से मिलान करके शुरुआत करें। एक फ़ाइल नाम में अल्फ़ान्यूमेरिक और विशेष वर्ण हो सकते हैं।
जैसा कि पहले चर्चा की गई थी कि प्रतीक ' w' है। इसके अलावा, फ़ाइल नाम एक या एक से अधिक वर्णों का हो सकता है इसलिए प्रतीक '+' का उपयोग करेगा। उन्हें मिलाएं और हम पहले भाग के लिए प्रतीक प्राप्त करते हैं।
(w+)
ब्रैकेट ने इसे भागों में अलग कर दिया। अगला भाग डॉट प्रतीक है। जैसा कि डॉट प्रतीक का एक रेगेक्स में अर्थ है, हम इसे शाब्दिक अर्थ देने के लिए बैकस्लैश का उपयोग करेंगे। दोनों को मिलाएं और हमारे पास रेगेक्स के पहले दो भाग हैं।
(w+).
अब, तीसरे और अंतिम भाग के लिए, हम सीधे आवश्यक फ़ाइल एक्सटेंशन को परिभाषित कर सकते हैं '| या प्रतीक है। यह तब एक वृत्ताकार कोष्ठ के अंदर संलग्न करके अलग किया जा सकता है। अंत में एक '$' चिह्न सुनिश्चित करता है कि परिभाषित एक्सटेंशन स्ट्रिंग के अंत में हैं। अब, अंतिम नियमित अभिव्यक्ति प्राप्त करने के लिए उन्हें संयोजित करें।
(w+).(jpg|png|jpeg|gif)$
अब, यदि हम इस कार्यक्रम में इसका उपयोग करते हैं तो हम देख सकते हैं कि यह सही प्रारूप से मेल खाता है और सही है लेकिन अमान्य प्रारूपों के साथ, यह गलत है।
परिदृश्य 4: वेबसाइट पते के प्रारूप को मान्य करने के लिए नियमित अभिव्यक्ति का उपयोग करें
मान लें कि हमारे पास एक वेब फ़ॉर्म है जो एक वेब पते या डोमेन पते को स्वीकार करता है। हम चाहते हैं कि उपयोगकर्ता फॉर्म भरते समय सही वेब / डोमेन पते दर्ज करें। यह निर्धारित करने के लिए कि क्या उपयोगकर्ता ने सही वेब पता दर्ज किया है, एक नियमित अभिव्यक्ति काफी उपयोगी हो सकती है।
public static void Main(string() args) { string patternText = @'^www.(a-zA-Z0-9){3,20}.(com|in|org|co.in|net|dev)$'; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch('www.selenium.dev')); //When pattern doesnt match Console.WriteLine(reg.IsMatch('ww.alsjk9874561230.movie.dont')); }
उत्पादन
सच
असत्य
व्याख्या
यहां, हम एक नियमित अभिव्यक्ति का उपयोग करके एक मान्य डोमेन नाम से मेल खाना चाहते हैं। एक मान्य डोमेन नाम संक्षिप्त नाम 'www' से शुरू होता है, उसके बाद एक डॉट (।) और उसके बाद वेबसाइट का नाम एक डॉट (।) और अंत में एक डोमेन एक्सटेंशन होता है।
इसलिए, पिछले परिदृश्य के समान है, हम इसे भाग द्वारा मैच करने की कोशिश करेंगे। 'Www।' अंश। इसलिए हम शुरू करने वाले प्रतीक के साथ शुरू करते हैं, फिर 'www।' यह कुछ ऐसा है जो निश्चित है, इसलिए हम शुरू करने वाले प्रतीक का उपयोग करते हैं और उसके बाद सटीक शब्दों का मिलान करते हैं।
“^www.”
फिर हम दूसरे भाग पर काम करना शुरू करेंगे। वेब पते का दूसरा भाग किसी भी अल्फ़ान्यूमेरिक नाम हो सकता है। इसलिए, यहां हम वर्ण श्रेणी में मौजूद वर्ग कोष्ठकों का उपयोग उस श्रेणी को परिभाषित करने के लिए करेंगे जिसका मिलान किया जाना है। दूसरे भाग के साथ दूसरे भाग को जोड़ने के बाद हमें दे देंगे।
“^www.(a-zA-Z0-9){3,20}”
यहां हमने वेबसाइट नाम के लिए न्यूनतम और अधिकतम वर्ण लंबाई को परिभाषित करने के लिए घुंघराले ब्रेसिज़ भी जोड़े हैं। हमने न्यूनतम 3 और अधिकतम 20 दिए हैं। आप अपनी इच्छानुसार कोई भी न्यूनतम या अधिकतम लंबाई दे सकते हैं।
अब, वेब पते के पहले और दूसरे हिस्से को कवर करने के बाद हम केवल अंतिम भाग, अर्थात् डोमेन एक्सटेंशन के साथ बचे हैं। यह पिछले परिदृश्य में हमने जो किया है, उसके समान है, हम सीधे सर्कुलर ब्रैकेट के भीतर प्रत्येक वैध डोमेन एक्सटेंशन का उपयोग करके या संलग्न करके डोमेन एक्सटेंशन के साथ मेल खाएंगे।
इस प्रकार यदि हम इन सभी को एक साथ जोड़ते हैं तो हमारे पास किसी भी वैध वेब पते से मेल खाने के लिए एक पूर्ण नियमित अभिव्यक्ति होगी।
www.(a-zA-Z0-9){3,20}.(com|in|org|co.in|net|dev)$
परिदृश्य 5: ईमेल आईडी प्रारूप को मान्य करने के लिए नियमित अभिव्यक्ति का उपयोग करें
मान लें कि हमारे वेबपेज पर हमारे पास एक साइन-इन फॉर्म है जो उपयोगकर्ताओं को अपना ईमेल पता दर्ज करने के लिए कहता है। स्पष्ट कारणों के लिए, हम नहीं चाहेंगे कि हमारा फ़ॉर्म अमान्य ईमेल पते के साथ आगे बढ़े। यह सत्यापित करने के लिए कि उपयोगकर्ता द्वारा दर्ज किया गया ईमेल पता सही है या नहीं, हम एक नियमित अभिव्यक्ति का उपयोग कर सकते हैं।
नीचे दिए गए एक ईमेल पते को मान्य करने के लिए एक सरल कार्यक्रम है।
public static void Main(string() args) { string patternText = @'^(a-zA-Z0-9._-){5,25}.@.(a-z){2,12}.(com|org|co.in|net)'; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch('software_test123@gmail.com')); Console.WriteLine(reg.IsMatch('Special.Char@yahoo.co.in')); //When pattern doesnt match Console.WriteLine(reg.IsMatch('ww.alsjk9874561230.mo@vie.dont')); }
उत्पादन
सच
सच
असत्य
व्याख्या
एक मान्य ईमेल पते में अक्षर, अंक और कुछ विशेष वर्ण जैसे डॉट (।), डैश (-), और अंडरस्कोर (_) के बाद '@' चिन्ह होता है और उसके बाद डोमेन नाम और डोमेन एक्सटेंशन होता है।
इस प्रकार, हम ईमेल पते को चार भागों में विभाजित कर सकते हैं अर्थात् ईमेल पहचानकर्ता, '@' प्रतीक, डोमेन नाम और अंतिम रूप से डोमेन एक्सटेंशन।
पहले भाग के लिए एक नियमित अभिव्यक्ति लिखकर शुरू करें। यह कुछ विशेष वर्णों के साथ अल्फा-न्यूमेरिक हो सकता है। मान लें कि हमारे पास अभिव्यक्ति का आकार 5 से 25 अक्षरों तक है। हमने इसे पहले (ईमेल परिदृश्य में) कैसे लिखा था, इसके समान, हम निम्नलिखित अभिव्यक्ति के साथ आ सकते हैं।
^(a-zA-Z0-9._-){5,25}
अब, दूसरे भाग में जा रहे हैं। यह तुलनात्मक रूप से आसान है क्योंकि हमें केवल एक प्रतीक यानी '@' का मिलान करना है। इसे उपरोक्त अभिव्यक्ति से जोड़ना हमें देता है।
^(a-zA-Z0-9._-){5,25}.@
तीसरे भाग यानी डोमेन नेम पर जाना हमेशा लोअर केस अल्फाबेटिक कैरेक्टर्स की एक श्रृंखला होगी। यदि आप चाहते हैं कि आप संख्यात्मक या ऊपरी मामले वर्णमाला वर्ण भी शामिल कर सकते हैं, लेकिन इस परिदृश्य के लिए, हम निम्न केस वर्णमाला के साथ जाएंगे।
यदि हम 2 से 12 अक्षरों की लंबाई वाले निचले मामले के अक्षर के लिए अभिव्यक्ति जोड़ते हैं, तो हमारे पास निम्नलिखित अभिव्यक्ति होगी।
^(a-zA-Z0-9._-){5,25}.@.(a-z){2,12}
अब, हम केवल डोमेन एक्सटेंशन के लिए अभिव्यक्ति के साथ रह गए हैं, चौथे परिदृश्य के समान, हम कुछ विशिष्ट डोमेन एक्सटेंशन संभाल लेंगे। यदि आप चाहते हैं कि आप उन्हें एक परिपत्र ब्रैकेट के अंदर संलग्न करके और उन्हें '' के साथ अलग करके अधिक जोड़ सकते हैं। प्रतीक।
पिछली अभिव्यक्ति के साथ इस अभिव्यक्ति को समेकित करने से हमें ईमेल सत्यापन के लिए हमारा अंतिम अभिव्यक्ति मूल्य मिलेगा।
^(a-zA-Z0-9._-){5,25}.@.(a-z){2,12}.(com|org|co.in|net)
निष्कर्ष
इस ट्यूटोरियल में, हमने सीखा कि वाक्यविन्यास / प्रतीकों के साथ-साथ नियमित अभिव्यक्ति के लिए कौन-कौन से नियमित अभिव्यक्ति हैं, एक नियमित अभिव्यक्ति का निर्माण करते हैं। नियमित अभिव्यक्ति उपयोगकर्ता को दिए गए पैटर्न के साथ एक स्ट्रिंग से मेल खाने की अनुमति देती है।
यह उन स्थितियों में काफी मददगार है जो इनपुट के त्वरित सत्यापन की मांग करते हैं जैसे कि जब उपयोगकर्ता अपने ईमेल पते या फोन नंबर में प्रवेश करता है, तो रेगेक्स का उपयोग प्रारूप को जल्दी से मान्य करने के लिए किया जा सकता है और यदि उपयोगकर्ता ने गलत प्रारूप में प्रवेश किया है तो इस मुद्दे के बारे में उपयोगकर्ता को सूचित करें।
हमने विभिन्न परिदृश्यों से निपटने के लिए भी सीखा जो विभिन्न अनुप्रयोगों के लिए उपयोग किए जा सकते हैं। हमने शब्द, अक्षर, वेबसाइट के पते, ईमेल आईडी, और यहां तक कि फ़ाइल प्रकार और एक्सटेंशन के लिए अभिव्यक्ति लिखने के लिए कदम से कदम प्रक्रिया को देखा।
ये परिदृश्य कोड की कई पंक्तियों को लिखे बिना उपयोगकर्ता इनपुट के वास्तविक समय सत्यापन में काफी उपयोगी हैं और इस तरह समय बचाने और जटिलता को कम करने में मदद करते हैं। इन उदाहरणों का उपयोग उपयोगकर्ता को नियमित अभिव्यक्ति के अपने सेट बनाने के लिए मार्गदर्शन करने के लिए किया गया है और इस प्रकार उन्हें कई अन्य विभिन्न परिदृश्यों को संभालने में मदद करता है।
रेगेक्स वर्णों या कॉम्प्लेक्सों की दी गई श्रृंखला के साथ मेल खाने के लिए वर्णमाला या अंकों का उपयोग करने की तरह सरल हो सकता है, विशेष प्रारूपों, क्वांटिफायर, चरित्र वर्गों आदि के संयोजन का उपयोग करके जटिल प्रारूपों को मान्य करने के लिए या चरित्र श्रृंखला में एक विशिष्ट पैटर्न की तलाश करने के लिए।
संक्षेप में, एक प्रोग्रामर के लिए एक नियमित अभिव्यक्ति काफी शक्तिशाली उपकरण है और डेटा मिलान या सत्यापन कार्य में पूरा करने के लिए आवश्यक कोड की मात्रा को कम करने में मदद करता है।
=> यहां सभी C # ट्यूटोरियल्स को चेक करें।
अनुशंसित पाठ
- सी # स्ट्रिंग ट्यूटोरियल - कोड उदाहरण के साथ स्ट्रिंग के तरीके
- कोड उदाहरणों के साथ सी # रैंडम नंबर और सी # रैंडम स्ट्रिंग जेनरेटर
- C ++ रेगेक्स ट्यूटोरियल: C ++ में रेग्युलर एक्सप्रेशंस उदाहरणों के साथ
- उदाहरण के साथ MongoDB नियमित अभिव्यक्ति $ regex
- नियमित अभिव्यक्ति उदाहरण के साथ जावा रेगेक्स ट्यूटोरियल
- यूनिक्स रेगुलर एक्सप्रेशंस का उपयोग कैसे करें
- JMeter में पोस्ट प्रोसेसर का उपयोग करना (नियमित अभिव्यक्ति एक्सट्रैक्टर)
- जावा स्ट्रिंग ट्यूटोरियल | उदाहरण के साथ जावा स्ट्रिंग के तरीके