यह ट्यूटोरियल प्रदर्शित करेगा कि वीबीए में रेगेक्स का उपयोग कैसे करें।
रेगेक्स क्या है?
रेगेक्स नियमित अभिव्यक्ति के लिए खड़ा है। रेगुलर एक्सप्रेशन वर्णों के अनुक्रम से बना एक पैटर्न है जिसका उपयोग आप किसी अन्य स्ट्रिंग में मिलान करने वाले पैटर्न को खोजने के लिए कर सकते हैं। वीबीए में रेगेक्स का उपयोग करने के लिए आपको RegExp ऑब्जेक्ट का उपयोग करना होगा।
[ए-सी] जैसे पैटर्न का उपयोग अनुक्रम से ए से सी तक के ऊपरी केस अक्षर को खोजने और मिलान करने के लिए किया जा सकता है। रेगेक्स पैटर्न का अपना सिंटैक्स होता है और इसे किसी वर्ण या वर्णों के अनुक्रम का उपयोग करके बनाया जा सकता है।
मिलान वर्ण
निम्न तालिका सिंटैक्स दिखाती है जो आपको रेगेक्स पैटर्न बनाने की अनुमति देगी।
पैटर्न सिंटैक्स | विवरण | उदाहरण | मैच मिले |
---|---|---|---|
. | vbNewLine को छोड़कर किसी एक वर्ण से मेल खाता है | f.n | पंखा, फॉन, f@n, fwn |
[पात्र] | कोष्ठकों के बीच किसी एक वर्ण से मेल खाता है [] | [एफएन] | प्रशंसक में केवल "f" या "n" से मेल खाएगा |
[^अक्षर] | किसी एकल वर्ण से मेल खाता है जो कोष्ठक के बीच नहीं है [] | [एफएन] | तो "fjn" में "j" से मेल खाएगा |
[शुरू अंत] | किसी भी वर्ण से मेल खाता है जो ब्रैकेट में श्रेणी का हिस्सा है [] | [1-5] | "45" में "4" और "5" से मेल खाएगा |
\w | अल्फ़ान्यूमेरिक वर्णों और अंडरस्कोर से मेल खाता है, लेकिन स्पेस कैरेक्टर से नहीं | \w | "सी" में "सी" से मेल खाएगा। |
\W | किसी भी गैर-अल्फ़ान्यूमेरिक वर्ण और अंडरस्कोर से मेल खाता है | \W | "@" से "बीबी@बीबी" से मेल खाएगा |
\एस | रिक्त स्थान और टैब जैसे किसी भी श्वेत स्थान वर्ण से मेल खाता है | \एस | "यह है" में "" से मेल खाएगा |
\एस | किसी भी गैर-श्वेत स्थान वर्ण से मेल खाता है | \एस | "टी" में "टी" और "एच" से मेल खाएगा |
\डी | किसी एकल दशमलव अंक से मेल खाता है | \डी | "a7h" में "7" से मेल खाएगा |
\डी | किसी एकल गैर-दशमलव अंक से मेल खाता है | \डी | "47j" में j से मेल खाएगा |
\ | विशेष पात्रों से बच निकलता है जो तब आपको उन्हें खोजने की अनुमति देता है | \. | "" से मेल खाएगा। "59.pQ" में |
\टी | टैब | \टी | एक टैब वर्ण से मेल खाएगा |
\आर | कैरिज रिटर्न | \आर | कैरिज रिटर्न (vbCr) से मेल खाएगा |
\एन | वीबीन्यूलाइन (वीबीटैब) | \एन | एक नई लाइन से मेल खाएगा |
परिमाणकों
आप क्वांटिफ़ायर का उपयोग यह निर्दिष्ट करने के लिए कर सकते हैं कि आप कितनी बार पैटर्न को स्ट्रिंग के विरुद्ध मिलान करना चाहते हैं।
परिमाणक | विवरण | उदाहरण | मैच मिले |
---|---|---|---|
* | शून्य या अधिक घटनाओं से मेल खाता है | एफएन*ए | fna, fa, fnnna, fnnna, fnfnnna |
+ | एक या अधिक घटनाओं से मेल खाता है | एफएन+ए | fna, fnna, fnfna |
? | शून्य या एक से मेल खाता है | fn?a | एफए, एफएनए |
{एन} | कई बार "एन" से मेल खाता है | डी\डब्ल्यू{4} | "डी …" से मेल खाएगा। "डी… ..&5hi" में |
{एन,} | कम से कम "n" बार की संख्या से मेल खाता है | डी\डब्ल्यू{4,} | “d… .&” से “d… .&5hi” से मेल खाएगा |
{एन, एम} | n और m के बीच कई बार मेल खाता है | डी\डब्ल्यू{1,8} | "d… .&&&&" से "d… .&&&&5hi" से मेल खाएगा |
समूहन
ग्रुपिंग या कैप्चरिंग आपको स्ट्रिंग के एक हिस्से को कैप्चर करने और निकालने के लिए एक पैटर्न का उपयोग करने की अनुमति देता है। तो न केवल पैटर्न का मिलान किया जाता है, बल्कि पैटर्न से मेल खाने वाले स्ट्रिंग का हिस्सा कैप्चर किया जाता है।
प्रतिरूप | विवरण | उदाहरण | मैच मिले और कैप्चर किए गए |
---|---|---|---|
(अभिव्यक्ति) | कोष्ठक में पैटर्न को समूहीकृत और कैप्चर करता है | (\डब्ल्यू{4}) | “@@@@” को “1@@@@1jlmba” से समूहीकृत और कैप्चर करेगा |
वीबीए में रेगेक्स का उपयोग कैसे करें
वीबीए में रेगेक्स का उपयोग करने के लिए, आपको पहले वीबीई संपादक में संदर्भ सेट करना होगा। वीबीई संपादक में, यहां जाएं टूल्स > संदर्भ > माइक्रोसॉफ्ट वीबीस्क्रिप्ट रेगुलर एक्सप्रेशन.
ये RegExp ऑब्जेक्ट के गुण हैं:
- प्रतिरूप - स्ट्रिंग के साथ मिलान के लिए आप जिस पैटर्न का उपयोग करने जा रहे हैं।
- मामले की अनदेखी करें - यदि सही है, तो मिलान अक्षर केस को अनदेखा कर देता है।
- वैश्विक - यदि सही है, तो स्ट्रिंग में पैटर्न के सभी मिलान पाए जाते हैं। यदि गलत है तो केवल पहला मैच पाया जाता है।
- बहु - यदि सही है, तो पैटर्न मिलान लाइन ब्रेक में होता है।
ये RegExp ऑब्जेक्ट की विधियाँ हैं:
- परीक्षण - एक स्ट्रिंग में एक पैटर्न की खोज करता है और एक मैच मिलने पर सही लौटाता है।
- बदलने के - पैटर्न की घटनाओं को प्रतिस्थापन स्ट्रिंग के साथ बदल देता है।
- निष्पादित करना - स्ट्रिंग के खिलाफ पैटर्न के मैच लौटाता है।
एक स्ट्रिंग के खिलाफ मैच के लिए एक पैटर्न का परीक्षण
आप यह जांचने के लिए टेस्ट विधि का उपयोग कर सकते हैं कि कोई पैटर्न इनपुट स्ट्रिंग में अनुक्रम से मेल खाता है या नहीं। यदि कोई मिलान पाया जाता है तो परिणाम सत्य है। निम्न कोड आपको दिखाएगा कि स्ट्रिंग के विरुद्ध पैटर्न का परीक्षण कैसे करें:
12345678910111213 | उप RegexTestingAPattern ()मंद स्ट्रिंगएक स्ट्रिंग के रूप मेंमंद रेगेक्सएक वस्तु के रूप मेंरेगेक्सऑन सेट करें = नया RegExpregexOne.Pattern = "f… .a"स्ट्रिंगऑन = "000111fjo88a8"डीबग.प्रिंट रेगेक्सवन.टेस्ट (स्ट्रिंगऑन)अंत उप |
परिणाम है:
एक स्ट्रिंग में एक पैटर्न को बदलना
आप स्ट्रिंग में मिलान पैटर्न के पहले उदाहरण या स्ट्रिंग में मिलान पैटर्न के सभी उदाहरणों को प्रतिस्थापित करने के लिए प्रतिस्थापन विधि का उपयोग कर सकते हैं। यदि ग्लोबल को गलत पर सेट किया जाता है, तो केवल पहला इंस्टेंस बदल दिया जाता है। निम्नलिखित कोड आपको दिखाएगा कि स्ट्रिंग में पैटर्न को कैसे बदला जाए:
1234567891011 | उप RegexReplaceingAPattern ()मंद स्ट्रिंगएक स्ट्रिंग के रूप मेंमंद रेगेक्सएक वस्तु के रूप मेंरेगेक्सऑन सेट करें = नया RegExpregexOne.Pattern = "यह संख्या है"regexOne.Global = FalsestringOne = "यह संख्या 718901 है"Debug.Print regexOne.Replace(stringOne, "वह नया नंबर है")अंत उप |
परिणाम है:
ऊपर प्रयुक्त स्ट्रिंग के केवल संख्या भाग को बदलने के लिए, आप निम्न कोड का उपयोग करेंगे:
1234567891011 | उप RegexReplaceingAPattern ()मंद स्ट्रिंगएक स्ट्रिंग के रूप मेंमंद रेगेक्सएक वस्तु के रूप मेंरेगेक्सऑन सेट करें = नया RegExpregexOne.Pattern = "[^\D]+"regexOne.Global = FalsestringOne = "यह संख्या 718901 है"डीबग.प्रिंट regexOne.Replace(stringOne, "777192")अंत उप |
परिणाम है:
एक स्ट्रिंग में एक निश्चित पैटर्न के प्रत्येक उदाहरण को बदलने के लिए, आप वैश्विक मान को सही पर सेट करेंगे। निम्न कोड आपको दिखाता है कि स्ट्रिंग में -A1289C- के प्रत्येक उदाहरण को कैसे बदला जाए:
1234567891011 | उप RegexReplaceingEveryInstanceOfAPattern ()मंद स्ट्रिंगएक स्ट्रिंग के रूप मेंमंद रेगेक्सएक वस्तु के रूप मेंरेगेक्सऑन सेट करें = नया RegExpregexOne.Pattern = "\W\A\d+C\W"रेगेक्सवन। ग्लोबल = ट्रूस्ट्रिंगऑन = "एबीसी-ए१२८९सी-एबीसी-ए१२८९सी-एबीसी"Debug.Print regexOne.Replace(stringOne, "IJK")अंत उप |
एक स्ट्रिंग में एक पैटर्न का मिलान और प्रदर्शित करना
आप एक स्ट्रिंग के भीतर एक पैटर्न के एक या सभी उदाहरणों से मिलान करने के लिए निष्पादन विधि का उपयोग कर सकते हैं। निम्न कोड आपको दिखाता है कि स्ट्रिंग से पैटर्न के सभी उदाहरणों का मिलान और प्रदर्शन कैसे करें:
123456789101112131415161718 | उप RegexMatchingAndDisplayingAPattern ()मंद स्ट्रिंगएक स्ट्रिंग के रूप मेंमंद रेगेक्सएक वस्तु के रूप मेंरेगेक्सऑन सेट करें = नया RegExpregexOne.Pattern = "ए.सी"रेगेक्सवन। ग्लोबल = ट्रूregexOne.IgnoreCase = IgnoreCaseस्ट्रिंगऑन = "एबीसी-ए१२८९सी-एडीसी-ए१२८९सी-एजेसी"मैच सेट करें = regexOne.Execute(stringOne)मैचों में प्रत्येक मैच के लिएडिबग.प्रिंट मैच.वैल्यूअगलाअंत उप |
परिणाम है:
मान लीजिए कि हम उपरोक्त स्ट्रिंग से केवल -ADC- का मिलान करना चाहते हैं। निम्न कोड दिखाता है कि कैसे मिलान करें और केवल -ADC- स्ट्रिंग से प्रदर्शित करें:
123456789101112131415161718 | उप RegexMatchingAndDisplayingAPattern ()मंद स्ट्रिंगएक स्ट्रिंग के रूप मेंमंद रेगेक्सएक वस्तु के रूप मेंरेगेक्सऑन सेट करें = नया RegExpregexOne.Pattern = "\-\A.C\-"regexOne.Global = FalseregexOne.IgnoreCase = IgnoreCaseस्ट्रिंगऑन = "एबीसी-ए१२८९सी-एडीसी-ए१२८९सी-एईसी"मैच सेट करें = regexOne.Execute(stringOne)मैचों में प्रत्येक मैच के लिएडिबग.प्रिंट मैच.वैल्यूअगलाअंत उप |
रेगेक्स को सीखने में कुछ समय लग सकता है, लेकिन यह टेक्स्ट के स्ट्रिंग्स को पहचानने/हेरफेर करने के लिए एक अत्यंत शक्तिशाली उपकरण है। यह व्यापक रूप से प्रोग्रामिंग भाषाओं में भी उपयोग किया जाता है।