Microsoft Word में RegEx का उपयोग कैसे करें - एक्सेल टिप्स

लिसा पूछती है:

क्या लोमड़ी शब्द के बाद एक संख्या (हमेशा एक यादृच्छिक संख्या) बदलने का एक तरीका है? उदाहरण: लोमड़ी 23, भालू 1, लोमड़ी 398, मेंढक 12, लोमड़ी 15. मैं लोमड़ी शब्द के समान रंग में संख्या बदलना चाहता हूं।

हम Microsoft Word में प्रारूप द्वारा पा सकते हैं और बदल सकते हैं। यह स्वरूपित पाठ को जल्दी से खोजने के लिए एक शानदार विशेषता है, और यहां तक ​​कि दस्तावेज़ में पूरे पाठ प्रारूप को प्रतिस्थापित करता है।

रिबन पर उन्नत खोज का चयन करें।

डायलॉग खोजें और बदलें

खोजने के लिए पाठ दर्ज करें, फिर उन्नत विकल्प देखने के लिए अधिक बटन पर क्लिक करें, और प्रारूप बटन पर क्लिक करें।

उन्नत विकल्प खोजें

सेटिंग्स में फ़ॉन्ट विकल्प चुनें, फिर आप उस टेक्स्ट रंग को सेट कर सकते हैं जिसे आप दस्तावेज़ में ढूंढना चाहते हैं। फ़ॉन्ट खोजें विंडो बंद करने के लिए ठीक पर क्लिक करें।

फाइंड फॉन्ट डायलॉग में टेक्स्ट कलर चुनें।

अगला खोजें पर क्लिक करें, और आप देखेंगे कि पाठ का पहला रोड़ा निश्चित रंग में खोजा जा रहा है।

पहली खोज करने के लिए अगला खोजें।

हम वाइल्डकार्ड का उपयोग करके अधिक जटिल खोज भी कर सकते हैं। हालाँकि, Word का मूल खोज मॉड्यूल हमें कोई खोज नहीं करने देता है कि लिसा ने कैसे पूछा।

यही कारण है कि हम खेल में RegEx कॉल कर सकते हैं!

VBSCript नियमित अभिव्यक्ति पुस्तकालय

VBA किसी भी नियमित अभिव्यक्ति समर्थन के साथ जहाज नहीं करता है। हालाँकि Microsoft VBScript लाइब्रेरी में शक्तिशाली नियमित अभिव्यक्ति क्षमताएं हैं। यह लाइब्रेरी इंटरनेट एक्सप्लोरर 5.5 और बाद का हिस्सा है, इसलिए यह विंडोज़ एक्सपी, विस्टा, 7, 8, 8.1 या 10 पर चलने वाले सभी कंप्यूटरों पर उपलब्ध है।

मैक उपयोगकर्ता

चूंकि Internet Explorer एक मैक एप्लिकेशन नहीं है, इसलिए यह लाइब्रेरी मैक में मौजूद नहीं है। इसलिए, नीचे VBA नमूने मैक में काम नहीं करते हैं।

VBA में इस लाइब्रेरी का उपयोग करने के लिए, VBE पर स्विच करें, VBE मेनू में प्रोजेक्ट और संदर्भ चुनें, फिर आइटम "Microsoft VBScript रेगुलर एक्सप्रेशंस 5.5" को खोजने के लिए सूची को नीचे स्क्रॉल करें, और एप्लिकेशन में शामिल करने के लिए इसे टिक करें।

VBScript रेगुलर एक्सप्रेशंस लाइब्रेरी

एक नया मॉड्यूल डालें, और इस मॉड्यूल में निम्न कोड को कॉपी और पेस्ट करें।

Sub doRegexFind() Dim strSample As String Dim objRegex As RegExp Dim matches As MatchCollection Dim fnd As Match strSample = "First product code is fox 12, second one is fox 22, and third product is fox 45." Set objRegex = New RegExp With objRegex .Pattern = "fox d+" .Global = True .IgnoreCase = True Set matches = .Execute(strSample) For Each fnd In matches Debug.Print fnd Next fnd End With End Sub

यह प्रक्रिया नमूना पाठ को लेती है, दिए गए पैटर्न द्वारा उत्पाद कोड ढूंढती है - जो "लोमड़ी", एकल स्थान और एक नंबर से शुरू होता है, और तत्काल विंडो में मिलान किए गए कोड को प्रिंट करता है (यदि यह नहीं है तो VBE में Ctrl + G को हिट करें) पहले से ही दिखाई दे रहा है)।

मिलान किए गए उत्पाद कोड तत्काल विंडो में छपे।

d+ पैटर्न में वर्ण वर्ग एक या अधिक संख्यात्मक वर्णों को परिभाषित करता है, और पैटर्न मूल रूप से "लोमड़ी" उपसर्ग होता है जिसके बाद संख्याओं के बाद एक स्थान होता है।

और जानकारी

रेगुलर एक्सप्रेशन लैंग्वेज पर जाएं - चरित्र पलायन, चरित्र वर्ग और एंकर के बारे में अधिक जानकारी के लिए त्वरित संदर्भ।

उत्पाद कोड से रिक्त स्थान को निकालने के लिए RegEx को देखने के लिए कोड का अनुसरण करते हुए कॉपी और पेस्ट करें।

Sub doRegexFindReplace() Dim objRegex As RegExp Dim matches As MatchCollection Dim fnd As Match Dim strSample As String strSample = "First product code is fox 12, second one is fox 22, and third product is fox 45." Set objRegex = New RegExp With objRegex .Pattern = "(fox) (d+)" .Global = True .IgnoreCase = True strSample = .Replace(strSample, "$1$2") End With Debug.Print strSample End Sub

यह प्रक्रिया दिए गए पैटर्न के साथ मेल खाने वाले उत्पाद कोड से रिक्त स्थान को हटाकर नमूना पाठ सामग्री की जगह लेती है, और परिणाम पाठ को तत्काल विंडो में प्रिंट करती है।

तत्काल विंडो में मुद्रित पाठ।

कृपया ध्यान दें कि पैटर्न पहले कोड से थोड़ा अलग है। इस पैटर्न की शर्तें कोष्ठक के साथ संलग्न हैं, और इसी शब्द का उपयोग प्रतिस्थापित विधि में $ 1 और $ 2 के क्रम में किया जाता है। यह प्रक्रिया केवल दो पदों को बिना रिक्त स्थान के सम्मिलित करती है।

वापस प्रश्न पर

आइए इस लेख की शुरुआत में हमारे द्वारा उपयोग किए गए नमूना पाठ पर वापस जाएं।

सेम्पल विषय

हमें "फॉक्स" खोजने की आवश्यकता है, जिसके बाद संख्यात्मक वर्ण हैं, और माचिस पाठ में "लोमड़ी" अनुभाग के रंग का उपयोग करके मैच को बदल सकते हैं।

यद्यपि RegEx दिए गए पैटर्न से बहुत अच्छा मेल खाता है, यह Word दस्तावेज़ में पाठ के रंग को प्रतिस्थापित नहीं कर सकता है। तो हम निम्नलिखित प्रक्रिया में RegEx और Word VBA विधियों को जोड़ देंगे।

यहाँ कदम हैं:

  1. RegEx के साथ मैच का पता लगाएं।
  2. Word खोज विधि का उपयोग करके प्रत्येक मिलान किए गए पाठ को खोजें।
  3. पाया सीमा में पहले शब्द का रंग खोजें।
  4. पिछले चरण में रंग के साथ पाया रेंज का रंग बदलें।

VBE पर स्विच करें, और एक नया मॉड्यूल डालें। सुनिश्चित करें कि VBScript रेगुलर एक्सप्रेशन लाइब्रेरी को प्रोजेक्ट में जोड़ा गया है, और इस नए मॉड्यूल में निम्नलिखित कोड को कॉपी और पेस्ट करें।

Sub doRegexMagic() Dim str As String Dim objRegex As RegExp Dim matches As MatchCollection Dim fnd As Match Set objRegex = New RegExp str = "fox" With Selection .HomeKey wdStory .WholeStory End With With objRegex .Pattern = str & " d+" .Global = True .IgnoreCase = True Set matches = .Execute(Selection.Text) End With With Selection .HomeKey wdStory With .Find .ClearFormatting .Forward = True .Format = False .MatchCase = True For Each fnd In matches .Text = fnd .Execute With Selection .Font.Fill.ForeColor = .Range.Words(1).Font.TextColor .MoveRight wdCharacter End With Next fnd End With .HomeKey wdStory End With End Sub 

कोड चलाएँ, और यहाँ परिणाम है।

परिणाम

डाउनलोड वर्ड फ़ाइल

वर्ड फाइल डाउनलोड करने के लिए: how-to-use-regex-in-microsoft-word.docm

एक्सेल में RegEx?

Regex Excel से पूरी तरह से गायब है। हालाँकि, हम अभी भी एक्सेल VBA में VBScript रेगुलर एक्सप्रेशंस का उपयोग कर सकते हैं।

Launch Excel, open a new workbook, and create the content as shown below.

Sample data in Excel

Reference

This article has been inspired by Learn Excel 2010 - "Find & Replace Color of A Certain Word": Podcast #1714 published by Bill Jelen on May 21, 2013! So we wanted to use similar sample text as he used in the video. We just added numbers after the "fox".

Switch to VBE, and insert a new module. Make sure VBScript Regular Expressions library is added to the project just like you did in Word, and copy and paste the following code into this new module.

Sub doRegexMagicInExcel() Dim str As String Dim objRegex As RegExp Dim matches As MatchCollection Dim fnd As Match Dim rng As Range Dim cll As Range Set objRegex = New RegExp Set rng = Selection str = "fox" With objRegex .Pattern = "(" & str & ") (d+)" .Global = True .IgnoreCase = True For Each cll In rng.Cells Set matches = .Execute(cll.Value) For Each fnd In matches cll.Value = .Replace(cll.Value, "$1$2") Next fnd Next cll End With End Sub

Return to worksheet, and select the range with sample text. Run the macro, and see the result.

Result in Excel

This procedure loops through the cells in the selected range, replaces the text in the cells by removing the spaces from the product codes matched with the given RegEx pattern.

Download Excel File

To download the Excel file: how-to-use-regex-in-microsoft-excel.xlsm

दिलचस्प लेख...