एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स कराExcel मध्ये मजकूरासह काम करताना सर्वात जास्त वेळ घेणारे आणि निराशाजनक कार्य आहे पार्सिंग - अल्फान्यूमेरिक "लापशी" घटकांमध्ये पार्स करणे आणि त्यातून आम्हाला आवश्यक असलेले तुकडे काढणे. उदाहरणार्थ:

  • पत्त्यावरून पिनकोड काढत आहे (पिन कोड नेहमी सुरवातीला असेल तर चांगले आहे, पण तो नसेल तर काय?)
  • बँक स्टेटमेंटमधील पेमेंटच्या वर्णनावरून इनव्हॉइसची संख्या आणि तारीख शोधणे
  • प्रतिपक्षांच्या यादीतील कंपन्यांच्या मोटली वर्णनातून TIN काढणे
  • वर्णनात कार क्रमांक किंवा लेख क्रमांक शोधा.

सहसा अशा प्रकरणांमध्ये, अर्ध्या तासाने मजकूर मॅन्युअली उचलल्यानंतर, ही प्रक्रिया स्वयंचलित करण्यासाठी (विशेषत: भरपूर डेटा असल्यास) विचार मनात येऊ लागतात. अनेक उपाय आहेत आणि जटिलता-कार्यक्षमतेच्या विविध अंशांसह:

  • वापर अंगभूत एक्सेल मजकूर कार्ये शोध-कट-गोंद मजकूर करण्यासाठी: LEVSIMV (डावे), योग्य (उजवीकडे), पीएसटीआर (मध्य), STsEPIT (CONCATENATE) आणि त्याचे analogues, एकत्र (JOINTEXT), अचूक (अचूक) इ. मजकूरात स्पष्ट तर्क असल्यास ही पद्धत चांगली आहे (उदाहरणार्थ, निर्देशांक नेहमी पत्त्याच्या सुरुवातीला असतो). अन्यथा, सूत्रे अधिक क्लिष्ट होतात आणि काहीवेळा, ते अॅरे फॉर्म्युलावर देखील येतात, जे मोठ्या टेबलांवर खूप कमी होतात.
  • वापरून मजकूर समानता ऑपरेटर सारखे सानुकूल मॅक्रो फंक्शनमध्ये गुंडाळलेल्या व्हिज्युअल बेसिकमधून. हे तुम्हाला वाइल्डकार्ड वर्ण (*, #,?, इ.) वापरून अधिक लवचिक शोध लागू करण्यास अनुमती देते, दुर्दैवाने, हे साधन मजकूरातून इच्छित सबस्ट्रिंग काढू शकत नाही – फक्त ते त्यात समाविष्ट आहे का ते तपासा.

वरील व्यतिरिक्त, आणखी एक दृष्टीकोन आहे जो व्यावसायिक प्रोग्रामर, वेब डेव्हलपर आणि इतर तंत्रज्ञांच्या संकुचित वर्तुळात खूप प्रसिद्ध आहे - तो आहे नियमित अभिव्यक्ती (नियमित अभिव्यक्ती = RegExp = "regexps" = "नियमित"). सोप्या भाषेत सांगायचे तर, RegExp ही एक भाषा आहे जिथे विशेष वर्ण आणि नियम मजकूरातील आवश्यक सबस्ट्रिंग शोधण्यासाठी, ते काढण्यासाठी किंवा इतर मजकूरासह बदलण्यासाठी वापरले जातात.. रेग्युलर एक्स्प्रेशन्स हे एक अतिशय शक्तिशाली आणि सुंदर साधन आहे जे मजकूरासह कार्य करण्याच्या इतर सर्व मार्गांना परिमाणाच्या क्रमाने मागे टाकते. अनेक प्रोग्रामिंग भाषा (C#, PHP, पर्ल, JavaScript…) आणि मजकूर संपादक (वर्ड, नोटपॅड++…) रेग्युलर एक्स्प्रेशन्सना सपोर्ट करतात.

Microsoft Excel ला दुर्दैवाने RegExp समर्थन नाही, परंतु हे VBA सह सहजपणे निश्चित केले जाऊ शकते. टॅबमधून व्हिज्युअल बेसिक एडिटर उघडा विकसक (विकासक) किंवा कीबोर्ड शॉर्टकट alt+F11. नंतर मेनूमधून नवीन मॉड्यूल घाला घाला - मॉड्यूल आणि तेथे खालील मॅक्रो फंक्शनचा मजकूर कॉपी करा:

सार्वजनिक कार्य RegExpExtract(स्ट्रिंग म्हणून मजकूर, स्ट्रिंग म्हणून नमुना, पूर्णांक म्हणून पर्यायी आयटम = 1) एररवर स्ट्रिंग म्हणून GoTo ErrHandl सेट करा regex = CreateObject("VBScript.RegExp") regex.Pattern = नमुना regex.Global = True. (मजकूर) नंतर matches = regex.Execute(Text) RegExpExtract = matches.Item(Item - 1) Exit Function End असल्यास ErrHandl: RegExpExtract = CVErr(xlErrValue) फंक्शन समाप्त करा  

आम्ही आता व्हिज्युअल बेसिक एडिटर बंद करू शकतो आणि आमचे नवीन वैशिष्ट्य वापरून पाहण्यासाठी Excel वर परत येऊ शकतो. त्याची वाक्यरचना खालीलप्रमाणे आहे:

=RegExpExtract( txt ; नमुना ; आयटम )

जेथे

  • txt - आम्ही तपासत असलेला मजकूर असलेला सेल आणि ज्यामधून आम्हाला आवश्यक असलेले सबस्ट्रिंग काढायचे आहे
  • नमुना - सबस्ट्रिंग शोधासाठी मुखवटा (नमुना).
  • आयटम - काढल्या जाणार्‍या सबस्ट्रिंगची अनुक्रम संख्या, जर त्यापैकी अनेक असतील (निर्दिष्ट नसल्यास, प्रथम घटना प्रदर्शित केली जाईल)

येथे सर्वात मनोरंजक गोष्ट अर्थातच पॅटर्न आहे – RegExp च्या "भाषेत" विशेष वर्णांची टेम्पलेट स्ट्रिंग, जी आपल्याला नेमके काय आणि कुठे शोधायचे आहे हे निर्दिष्ट करते. तुम्‍ही सुरू करण्‍यासाठी येथे सर्वात मूलभूत आहेत:

 नमुना  वर्णन
 . सर्वात सोपा एक बिंदू आहे. हे निर्दिष्ट स्थानावरील पॅटर्नमधील कोणत्याही वर्णाशी जुळते.
 s स्पेससारखे दिसणारे कोणतेही वर्ण (स्पेस, टॅब किंवा लाइन ब्रेक).
 S
मागील पॅटर्नचा अँटी-व्हेरियंट, म्हणजे कोणतेही नॉन-व्हाइटस्पेस वर्ण.
 d
कोणतीही संख्या
 D
मागील एकाचा अँटी व्हेरिएंट, म्हणजे कोणताही अंक नाही
 w कोणतेही लॅटिन वर्ण (AZ), अंक किंवा अंडरस्कोर
 W मागील एक विरोधी भिन्नता, म्हणजे लॅटिन नाही, संख्या नाही आणि अंडरस्कोर नाही.
[वर्ण] चौरस कंसात, तुम्ही मजकूरातील निर्दिष्ट स्थानावर अनुमती असलेले एक किंवा अधिक वर्ण निर्दिष्ट करू शकता. उदाहरणार्थ कला कोणत्याही शब्दांशी जुळेल: टेबल or खुर्ची.

तुम्ही वर्णांची गणना देखील करू शकत नाही, परंतु त्यांना हायफनने विभक्त केलेली श्रेणी म्हणून सेट करू शकता, म्हणजे त्याऐवजी [ABDCDEF] लिहू [AF]. किंवा त्याऐवजी [4567] परिचय [-४ ७]. उदाहरणार्थ, सर्व सिरिलिक वर्ण नियुक्त करण्यासाठी, आपण टेम्पलेट वापरू शकता [a-yaA-YoYo].

[^वर्ण] जर सुरुवातीच्या चौकोनी कंसानंतर "झाकण" चिन्ह जोडा ^, नंतर संच विरुद्ध अर्थ प्राप्त करेल – मजकूरातील निर्दिष्ट स्थानावर, सूचीबद्ध केलेल्या वगळता सर्व वर्णांना परवानगी दिली जाईल. होय, टेम्पलेट [^ЖМ]ut सापडेल पथ or पदार्थ or विसरा, पण नाही धडकी भरवणारा or मट, उदा.
 | बुलियन ऑपरेटर OR (किंवा) निर्दिष्ट केलेल्या कोणत्याही निकषांची तपासणी करण्यासाठी. उदाहरणार्थ (पासूनगुरु |अगदी|चालन) निर्दिष्ट केलेल्या कोणत्याही शब्दासाठी मजकूर शोधेल. सामान्यतः, पर्यायांचा संच कंसात बंद केलेला असतो.
 ^ ओळीची सुरुवात
 $ ओळीचा शेवट
 b शब्दाचा शेवट

जर आम्ही विशिष्ट वर्णांची संख्या शोधत असाल, उदाहरणार्थ, सहा-अंकी पोस्टल कोड किंवा सर्व तीन-अक्षरी उत्पादन कोड, तर आम्ही बचावासाठी येतो परिमाणक or परिमाणक विशेष अभिव्यक्ती आहेत जे शोधण्यासाठी वर्णांची संख्या निर्दिष्ट करतात. त्याच्या आधी येणार्‍या वर्णावर क्वांटिफायर लागू केले जातात:

  क्वांटर  वर्णन
 ? शून्य किंवा एक घटना. उदाहरणार्थ .? याचा अर्थ कोणताही एक वर्ण किंवा त्याची अनुपस्थिती असेल.
 + एक किंवा अधिक नोंदी. उदाहरणार्थ d+ म्हणजे अंकांची कोणतीही संख्या (म्हणजे 0 आणि अनंत मधील कोणतीही संख्या).
 * शून्य किंवा अधिक घटना, म्हणजे कोणतेही प्रमाण. तर s* म्हणजे कितीही मोकळी जागा किंवा रिक्त जागा नाही.
{संख्या} or

{संख्या 1,संख्या 2}

आपल्याला घटनांची काटेकोरपणे परिभाषित संख्या निर्दिष्ट करण्याची आवश्यकता असल्यास, ते कुरळे ब्रेसेसमध्ये निर्दिष्ट केले आहे. उदाहरणार्थ डी{6} म्हणजे काटेकोरपणे सहा अंक आणि नमुना s{2,5} - दोन ते पाच जागा

आता सर्वात मनोरंजक भागाकडे वळूया - तयार केलेल्या कार्याच्या अनुप्रयोगाचे विश्लेषण आणि जीवनातील व्यावहारिक उदाहरणांवर नमुन्यांबद्दल आपण काय शिकलो.

मजकूरातून संख्या काढत आहे

सुरुवातीला, चला एका साध्या केसचे विश्लेषण करूया - आपल्याला अल्फान्यूमेरिक लापशीमधून पहिला क्रमांक काढण्याची आवश्यकता आहे, उदाहरणार्थ, किंमत सूचीमधून अखंडित वीज पुरवठ्याची शक्ती:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

नियमित अभिव्यक्तीमागील तर्क सोपे आहे: d म्हणजे कोणताही अंक आणि परिमाणक + म्हणते की त्यांची संख्या एक किंवा अधिक असावी. फंक्शनच्या समोरील दुहेरी वजा "ऑन द फ्लाय" करण्यासाठी काढलेल्या अक्षरांना संख्या-म्हणून-मजकूरमधून पूर्ण संख्येमध्ये रूपांतरित करण्यासाठी आवश्यक आहे.

पिनकोड

पहिल्या दृष्टीक्षेपात, येथे सर्वकाही सोपे आहे - आम्ही सलग सहा अंक शोधत आहोत. आम्ही एक विशेष वर्ण वापरतो d अंक आणि क्वांटिफायरसाठी २,३,४ {} वर्णांच्या संख्येसाठी:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

तथापि, अशी परिस्थिती शक्य आहे जेव्हा, इंडेक्सच्या डावीकडे, एका ओळीत आणखी एक मोठा संच असतो (फोन नंबर, टीआयएन, बँक खाते इ.) नंतर आमचा नियमित हंगाम पहिले 6 काढेल. त्यातून अंक, म्हणजे योग्यरित्या कार्य करणार नाहीत:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

हे होण्यापासून रोखण्यासाठी, आम्हाला आमच्या रेग्युलर एक्सप्रेशनच्या कडाभोवती एक सुधारक जोडण्याची आवश्यकता आहे b शब्दाचा शेवट सूचित करणे. हे एक्सेलला हे स्पष्ट करेल की आम्हाला आवश्यक असलेला तुकडा (इंडेक्स) हा वेगळा शब्द असावा, आणि दुसर्‍या खंडाचा (फोन नंबर) भाग नसावा:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

फोन

मजकुरात फोन नंबर शोधण्यात समस्या अशी आहे की नंबर लिहिण्यासाठी बरेच पर्याय आहेत – हायफनसह आणि त्याशिवाय, स्पेसद्वारे, कंसात प्रदेश कोडसह किंवा त्याशिवाय, इत्यादी. त्यामुळे माझ्या मते, हे करणे सोपे आहे. प्रथम अनेक नेस्टेड फंक्शन्स वापरून सोर्स टेक्स्टमधून ही सर्व अक्षरे साफ करा सबस्टिट्यूट (बदली)जेणेकरून ते एका संपूर्ण मध्ये एकत्र चिकटून राहते आणि नंतर आदिम नियमित सह डी{11} सलग 11 अंक काढा:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

आयटीएन

येथे थोडे अधिक क्लिष्ट आहे, कारण TIN (आमच्या देशात) 10-अंकी (कायदेशीर घटकांसाठी) किंवा 12-अंकी (व्यक्तीसाठी) असू शकतो. जर तुम्हाला विशेषत: दोष आढळला नाही, तर नियमितपणे समाधानी असणे शक्य आहे डी{10,12}, परंतु, काटेकोरपणे सांगायचे तर, ते 10 ते 12 वर्णांमधील सर्व अंक काढेल, म्हणजे आणि चुकून 11 अंक प्रविष्ट केले आहेत. तार्किक किंवा ऑपरेटरद्वारे जोडलेले दोन नमुने वापरणे अधिक योग्य असेल | (उभ्या पट्टी):

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

कृपया लक्षात घ्या की क्वेरीमध्ये आम्ही प्रथम 12-बिट क्रमांक शोधतो आणि त्यानंतरच 10-बिट क्रमांकांसाठी. जर आपण आमची रेग्युलर एक्स्प्रेशन उलट लिहिली, तर ती प्रत्येकासाठी काढली जाईल, अगदी लांब 12-बिट TIN, फक्त पहिले 10 वर्ण. म्हणजेच, पहिली अट ट्रिगर झाल्यानंतर, पुढील सत्यापन यापुढे केले जाणार नाही:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

ऑपरेटरमधील हा मूलभूत फरक आहे | मानक एक्सेल लॉजिक फंक्शनमधून OR (किंवा), जेथे वितर्कांची पुनर्रचना केल्याने परिणाम बदलत नाही.

उत्पादन एसकेयू

बर्‍याच कंपन्यांमध्ये, वस्तू आणि सेवा - लेख, SAP कोड, SKU, इत्यादींना अद्वितीय अभिज्ञापक नियुक्त केले जातात. जर त्यांच्या नोटेशनमध्ये तर्क असेल, तर ते रेग्युलर एक्स्प्रेशन वापरून कोणत्याही मजकूरातून सहज काढता येतात. उदाहरणार्थ, जर आम्हाला माहित असेल की आमच्या लेखांमध्ये नेहमी तीन मोठ्या इंग्रजी अक्षरे, एक हायफन आणि त्यानंतरची तीन-अंकी संख्या असते, तर:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

टेम्पलेटमागील तर्क सोपे आहे. [AZ] - म्हणजे लॅटिन वर्णमालेतील कोणतेही कॅपिटल अक्षरे. पुढील क्वांटिफायर २,३,४ {} म्हणतात की अशी तीन अक्षरे आहेत हे आपल्यासाठी महत्त्वाचे आहे. हायफन नंतर, आम्ही तीन अंकांची वाट पाहत आहोत, म्हणून आम्ही शेवटी जोडतो डी{3}

रोख रक्कम

मागील परिच्छेदाप्रमाणेच, तुम्ही वस्तूंच्या वर्णनावरून किंमती (खर्च, व्हॅट …) देखील काढू शकता. जर मौद्रिक रक्कम, उदाहरणार्थ, हायफनने दर्शविली असेल, तर:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

नमुना d क्वांटिफायर सह + हायफन पर्यंत कोणतीही संख्या शोधते आणि डी{2} नंतर पेनी (दोन अंक) शोधेल.

जर तुम्हाला किंमती नाही तर व्हॅट काढायचा असेल, तर तुम्ही आमच्या RegExpExtract फंक्शनचा तिसरा पर्यायी युक्तिवाद वापरू शकता, जे एक्सट्रॅक्ट करायच्या घटकाची क्रमिक संख्या निर्दिष्ट करते. आणि, अर्थातच, आपण फंक्शन पुनर्स्थित करू शकता सबस्टिट्यूट (बदली) परिणामांमध्ये, मानक दशांश विभाजकावर हायफन करा आणि सुरुवातीला दुहेरी वजा जोडा जेणेकरून एक्सेल आढळलेल्या व्हॅटचा सामान्य क्रमांक म्हणून अर्थ लावेल:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

कार प्लेट क्रमांक

आपण विशेष वाहने, ट्रेलर आणि इतर मोटारसायकल घेत नसल्यास, मानक कार क्रमांक "अक्षर - तीन संख्या - दोन अक्षरे - प्रदेश कोड" या तत्त्वानुसार पार्स केला जातो. शिवाय, प्रदेश कोड 2- किंवा 3-अंकी असू शकतो आणि केवळ लॅटिन वर्णमाला सारखे दिसणारे अक्षरे वापरतात. अशा प्रकारे, खालील रेग्युलर एक्सप्रेशन आपल्याला मजकूरातून संख्या काढण्यास मदत करेल:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

वेळ

HH:MM स्वरूपात वेळ काढण्यासाठी, खालील नियमित अभिव्यक्ती योग्य आहे:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

कोलन तुकडा नंतर [०-५]दि, हे शोधणे सोपे असल्याने, 00-59 श्रेणीतील कोणतीही संख्या सेट करते. कंसातील कोलनच्या आधी, तार्किक OR (पाईप) द्वारे विभक्त केलेले दोन नमुने कार्य करतात:

  • [०-५]दि - 00-19 श्रेणीतील कोणतीही संख्या
  • 2[0-3] - 20-23 श्रेणीतील कोणतीही संख्या

प्राप्त परिणामासाठी, आपण अतिरिक्तपणे मानक एक्सेल फंक्शन लागू करू शकता TIME मध्ये (टीम)प्रोग्रामला समजण्यायोग्य आणि पुढील गणनेसाठी योग्य अशा वेळेच्या स्वरूपात रूपांतरित करण्यासाठी.

पासवर्ड चेक

समजा की अचूकतेसाठी वापरकर्त्यांनी शोधलेल्या पासवर्डची यादी तपासायची आहे. आमच्या नियमांनुसार, पासवर्डमध्ये फक्त इंग्रजी अक्षरे (लोअरकेस किंवा अपरकेस) आणि संख्या असू शकतात. स्पेस, अंडरस्कोअर आणि इतर विरामचिन्हांना अनुमती नाही.

खालील साध्या रेग्युलर एक्सप्रेशनचा वापर करून तपासणी आयोजित केली जाऊ शकते:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

खरं तर, अशा पॅटर्नसह आम्हाला आवश्यक आहे की सुरुवातीच्या दरम्यान (^) आणि शेवटी ($) आमच्या मजकुरात चौकोनी कंसात दिलेल्या संचातील फक्त अक्षरे होती. जर तुम्हाला पासवर्डची लांबी देखील तपासायची असेल (उदाहरणार्थ, किमान 6 वर्ण), तर क्वांटिफायर + फॉर्ममधील "सहा किंवा अधिक" मध्यांतराने बदलले जाऊ शकते {6,:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

पत्त्यावरून शहर

समजा आम्हाला अॅड्रेस बारमधून शहर खेचणे आवश्यक आहे. नियमित प्रोग्राम मदत करेल, "g" मधून मजकूर काढला. पुढील स्वल्पविरामाकडे:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

चला या पॅटर्नवर जवळून नजर टाकूया.

जर तुम्ही वरील मजकूर वाचला असेल, तर तुम्हाला आधीच समजले आहे की रेग्युलर एक्स्प्रेशनमधील काही वर्णांचा (कालावधी, तारका, डॉलर चिन्ह इ.) विशेष अर्थ आहे. जर तुम्हाला ही अक्षरे स्वतः शोधायची असतील तर त्यांच्या आधी बॅकस्लॅश (कधीकधी म्हणतात ढाली). म्हणून, “g” तुकडा शोधताना. आपल्याला रेग्युलर एक्स्प्रेशनमध्ये लिहावे लागेल श्री. जर आपण प्लस शोधत असाल तर +

आमच्या टेम्प्लेटमधील पुढील दोन वर्ण, डॉट आणि क्वांटिफायर तारांकन, कोणत्याही वर्णांच्या संख्येसाठी, म्हणजे कोणत्याही शहराचे नाव.

टेम्प्लेटच्या शेवटी स्वल्पविराम आहे, कारण आम्ही "g" वरून मजकूर शोधत आहोत. स्वल्पविरामाने. पण मजकुरात अनेक स्वल्पविराम असू शकतात, बरोबर? शहरानंतरच नाही, तर गल्ली, घरे वगैरे यांनंतर आमची विनंती कोणावर थांबणार? त्यासाठीच प्रश्नचिन्ह आहे. त्याशिवाय, आमची नियमित अभिव्यक्ती शक्य तितकी लांब स्ट्रिंग काढेल:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

रेग्युलर एक्स्प्रेशन्सच्या संदर्भात, असा नमुना "लोभी" आहे. परिस्थिती दुरुस्त करण्यासाठी, एक प्रश्नचिन्ह आवश्यक आहे – ते क्वांटिफायर बनवते ज्यानंतर ते “कंजूळ” उभे राहते – आणि आमची क्वेरी मजकूर फक्त “g” नंतरच्या पहिल्या काउंटर स्वल्पविरामापर्यंत घेऊन जाते:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

पूर्ण मार्गावरून फाइलनाव

आणखी एक अतिशय सामान्य परिस्थिती म्हणजे संपूर्ण मार्गातून फाईलचे नाव काढणे. फॉर्मची एक साधी नियमित अभिव्यक्ती येथे मदत करेल:

एक्सेलमध्ये रेग्युलर एक्स्प्रेशन्स (RegExp) सह मजकूर पार्स करा

येथे युक्ती अशी आहे की शोध, खरेतर, उलट दिशेने होतो - शेवटपासून सुरुवातीपर्यंत, कारण आमच्या टेम्पलेटच्या शेवटी आहे $, आणि आम्ही उजवीकडून पहिल्या बॅकस्लॅशपर्यंत सर्व काही शोधत आहोत. मागील उदाहरणातील बिंदूप्रमाणे बॅकस्लॅश सुटला आहे.

PS

“शेवटच्या दिशेने” मला हे स्पष्ट करायचे आहे की वरील सर्व रेग्युलर एक्स्प्रेशन्स प्रदान करणार्‍या सर्व शक्यतांचा एक छोटासा भाग आहे. त्यांच्या वापरासाठी बरेच विशेष वर्ण आणि नियम आहेत आणि या विषयावर संपूर्ण पुस्तके लिहिली गेली आहेत (मी सुरुवात करण्यासाठी किमान याची शिफारस करतो). एक प्रकारे, रेग्युलर एक्स्प्रेशन्स लिहिणे ही जवळपास एक कला आहे. जवळजवळ नेहमीच, आविष्कृत नियमित अभिव्यक्ती सुधारली किंवा पूरक केली जाऊ शकते, ज्यामुळे ते अधिक शोभिवंत किंवा इनपुट डेटाच्या विस्तृत श्रेणीसह कार्य करण्यास सक्षम बनते.

इतर लोकांच्या रेग्युलर एक्स्प्रेशन्सचे विश्लेषण आणि विश्लेषण करण्यासाठी किंवा तुमचे स्वतःचे डीबग करण्यासाठी, अनेक सोयीस्कर ऑनलाइन सेवा आहेत: RegEx101, रेजीएक्सआर आणि अधिक

दुर्दैवाने, क्लासिक रेग्युलर एक्सप्रेशन्सची सर्व वैशिष्ट्ये VBA मध्ये समर्थित नाहीत (उदाहरणार्थ, रिव्हर्स सर्च किंवा POSIX क्लासेस) आणि सिरिलिकसह कार्य करू शकतात, परंतु मला वाटते की प्रथमच तुम्हाला संतुष्ट करण्यासाठी जे काही आहे ते पुरेसे आहे.

जर तुम्ही या विषयावर नवीन नसाल आणि तुमच्याकडे काहीतरी शेअर करायचे असेल, तर खाली दिलेल्या टिप्पण्यांमध्ये Excel मध्ये काम करताना उपयुक्त रेग्युलर एक्स्प्रेशन्स सोडा. एक मन चांगलं, पण दोन बुटांची जोडी!

  • SUBSTITUTE फंक्शनसह मजकूर बदलणे आणि साफ करणे
  • मजकूरात लॅटिन वर्ण शोधणे आणि हायलाइट करणे
  • जवळचा समान मजकूर शोधा (इव्हानोव्ह = इव्होनोव्ह = इव्हानोफ इ.)

प्रत्युत्तर द्या