पावर क्वेरीमा नियमित अभिव्यक्ति (RegExp)

यदि तपाइँ नियमित अभिव्यक्तिहरूसँग कम्तिमा थोरै परिचित हुनुहुन्छ भने, तपाइँ तिनीहरूलाई विज्ञापन गर्न आवश्यक छैन। यदि तपाइँ यस विषयमा पूर्ण रूपमा हुनुहुन्न भने, त्यसपछि नियमित अभिव्यक्ति (नियमित अभिव्यक्ति = RegExp = "regexps" = "नियमित") एक भाषा हो जहाँ, विशेष क्यारेक्टर र नियमहरू प्रयोग गरेर, आवश्यक सबस्ट्रिङहरू पाठमा खोजी गरिन्छ, तिनीहरूलाई निकालिन्छ। वा अन्य पाठ संग प्रतिस्थापित। यो एक धेरै शक्तिशाली र सुन्दर उपकरण हो, पाठ संग काम गर्ने अन्य सबै तरिकाहरु भन्दा उच्च परिमाण को एक आदेश।

मैले पहिले नै विस्तृत रूपमा वर्णन गरेको छु र जीवनका उदाहरणहरूको गुच्छाको साथ कसरी तपाइँ साधारण म्याक्रोहरू प्रयोग गरेर एक्सेलमा नियमित अभिव्यक्ति समर्थन थप्न सक्नुहुन्छ - यदि तपाइँले यो लेख पढ्नुभएको छैन भने, म तपाइँलाई जारी राख्नु अघि यसलाई पढ्न सिफारिस गर्दछु। तपाईंले धेरै नयाँ कुराहरू पत्ता लगाउनुहुनेछ, म ग्यारेन्टी दिन्छु 🙂

यद्यपि, प्रश्न खुला रहन्छ - कसरी Power Query मा नियमित अभिव्यक्तिहरू प्रयोग गर्ने क्षमता थप्ने? पावर क्वेरी, निस्सन्देह, आफैमा राम्रो छ र पाठ (काट्ने, ग्लुइंग, सफाई, आदि) को साथ धेरै गर्न सक्छ, तर यदि तपाइँ यसलाई नियमित अभिव्यक्तिको शक्तिले पार गर्न सक्नुहुन्छ भने, यो केवल बम हुनेछ।

दुर्भाग्यवश, Power Query मा RegExps सँग काम गर्नका लागि कुनै अन्तर्निहित प्रकार्यहरू छैनन्, र आधिकारिक Microsoft मद्दत र प्राविधिक समर्थनले यस प्रश्नको जवाफ नकारात्मक रूपमा दिन्छ। यद्यपि, यस सीमाको वरिपरि एउटा तरिका छ 🙂

विधि को सार

मुख्य विचार अपमान गर्न सरल छ।

बिल्ट-इन पावर क्वेरी क्षमताहरूको सूचीमा, त्यहाँ एक प्रकार्य छ वेब पृष्ठ। आधिकारिक Microsoft मद्दत साइटमा यस प्रकार्यको विवरण अत्यन्त संक्षिप्त छ:

पावर क्वेरीमा नियमित अभिव्यक्ति (RegExp)

अनुवादित, यो हुनेछ: "HTML कागजातको सामग्रीहरू यसको घटक संरचनाहरूमा विभाजित हुन्छ, साथै पूर्ण कागजातको प्रतिनिधित्व र ट्यागहरू हटाइसकेपछि यसको मुख्य भाग फर्काउँछ।" सो-त्यसो विवरण, स्पष्ट रूपमा।

सामान्यतया यो प्रकार्य वेबबाट डाटा आयात गर्दा प्रयोग गरिन्छ र स्वचालित रूपमा प्रतिस्थापित हुन्छ, उदाहरणका लागि, जब हामी ट्याबमा चयन गर्छौं तथ्याङ्क आदेश इन्टरनेटबाट (डेटा - वेबबाट)। हामी प्रकार्यलाई तर्कको रूपमा वेब पृष्ठ दिन्छौं, र यसले पहिले नै सबै ट्यागहरू खाली गरिसकेपछि, तालिकाको रूपमा हामीलाई यसको सामग्रीहरू फर्काउँछ।

HTML मार्कअप भाषाको अतिरिक्तमा मद्दतले के भन्दैन समारोह वेब पृष्ठ जाभास्क्रिप्ट स्क्रिप्ट समर्थन गर्दछ, जुन अब इन्टरनेटमा वेबसाइटहरूमा सर्वव्यापी छ। र JavaScript, बारीमा, सधैं नियमित अभिव्यक्तिहरूसँग काम गर्न सक्षम भएको छ र RegExps को लागि निर्मित प्रकार्यहरू छन्! त्यसैले Power Query मा नियमित अभिव्यक्तिहरू लागू गर्न, हामीले Web.Page प्रकार्यहरूलाई एउटा सानो JavaScript प्रोग्राममा तर्कको रूपमा फिड गर्न आवश्यक छ जसले Power Query को लागि सबै काम गर्नेछ।

यो शुद्ध जाभास्क्रिप्टमा कस्तो देखिन्छ

इन्टरनेटमा जाभास्क्रिप्टमा नियमित अभिव्यक्तिहरूसँग काम गर्ने विस्तृत ट्यूटोरियलहरू छन् (उदाहरणका लागि, एक, दुई)।

छोटो र सरलीकृत मा, जाभास्क्रिप्ट कोड यस्तो देखिनेछ:

पावर क्वेरीमा नियमित अभिव्यक्ति (RegExp)

यहाँ:

  • var str = 'ससेजको लागि 123 र 789 बिलहरू तिर्नुहोस्'; - एक चर सिर्जना गर्नुहोस् str र यसलाई हामीले विश्लेषण गर्ने स्रोत पाठ असाइन गर्नुहोस्।
  • var ढाँचा = /d+/gi; - नियमित अभिव्यक्ति सिर्जना गर्नुहोस् र यसलाई चलमा राख्नुहोस् ढाँचा.

    अभिव्यक्ति स्ल्याश (/) बाट सुरु हुन्छ।

    यहाँ अभिव्यक्ति आफैं, उदाहरणका लागि, हो d+ अंकहरूको कुनै पनि क्रमको लागि खडा हुन्छ।

    अभिव्यक्ति पछिको अंश मार्फत, त्यहाँ थप खोज प्यारामिटरहरू (परिमार्जकहरू) छन् - तिनीहरूलाई कुनै पनि क्रममा निर्दिष्ट गर्न सकिन्छ:

    • g - भनेको विश्वव्यापी खोज हो, अर्थात् मिल्दो फेला पारेपछि, तपाईंले रोक्नु हुँदैन, तर पाठको अन्त्य नभएसम्म खोज जारी राख्नुहोस्। यदि यो परिमार्जनकर्ता सेट गरिएको छैन भने, हाम्रो लिपिले पहिलो मिलान मात्र फर्काउनेछ (123)
    • i - अक्षर को मामला बिना खोज
    • m - बहु-लाइन खोज (स्रोत पाठ धेरै रेखाहरूमा विभाजित हुँदा प्रयोग गरिन्छ)
  • var परिणाम = str.match(pattern).join(';'); - स्रोत पाठमा खोजी गर्नुहोस् (strदिइएको नियमित अभिव्यक्ति द्वारा (ढाँचा) र परिणामहरूलाई चरमा राख्नुहोस् परिणाम, आदेश प्रयोग गरेर तिनीहरूलाई अर्धविरामसँग जोड्दै सामेल
  • document.write(नतिजा); - परिणाम चरको सामग्रीहरू प्रदर्शन गर्नुहोस्

यो पनि ध्यान दिनुहोस् कि जाभास्क्रिप्टमा पाठ स्ट्रिङहरू (नियमित अभिव्यक्तिहरू बाहेक) एपोस्ट्रोफहरूमा संलग्न छन्, उद्धरणहरू होइन जुन तिनीहरू Power Query वा VBA मा छन्।

आउटपुटमा, यो स्क्रिप्टले हामीलाई स्रोत पाठमा पाइने सबै नम्बरहरू परिणाम स्वरूप दिनेछ:

123, 789

JavaScript छोटो पाठ्यक्रम सकियो, सबैलाई धन्यवाद। आशा छ तपाईंले तर्क पाउनुहुन्छ 🙂

यो निर्माणलाई Power Query मा हस्तान्तरण गर्न बाँकी छ।

पावर क्वेरीमा नियमित अभिव्यक्तिद्वारा पाठ प्रकार्य खोज्नुहोस् र निकाल्नुहोस्

हामी निम्न गर्छौं:

1। एक्सेल खोल्नुहोस् र ट्याबमा नयाँ खाली पावर क्वेरी सिर्जना गर्नुहोस् डाटा - डाटा प्राप्त गर्नुहोस् / अनुरोध सिर्जना गर्नुहोस् - अन्य स्रोतहरूबाट - खाली अनुरोध (डेटा — डाटा पाउनुहोस् / नयाँ क्वेरी — अन्य स्रोतहरूबाट — खाली क्वेरी)। यदि तपाइँसँग Excel 2010-2013 को पुरानो संस्करण र Power Query छ जुन तपाइँसँग बिल्ट-इन छैन, तर छुट्टै एड-इनको रूपमा स्थापना गरिएको थियो, तब यो सबै ट्याबमा हुनेछ। पावर क्वेरीर छैन तथ्याङ्क.

2। खोल्ने क्वेरी सम्पादकको खाली विन्डोमा, दायाँ प्यानलमा, तुरुन्तै हाम्रो भविष्यको प्रकार्यको नाम प्रविष्ट गर्नुहोस् (उदाहरणका लागि, fxRegExpExtract)

पावर क्वेरीमा नियमित अभिव्यक्ति (RegExp)

3। ट्याबमा जाऔं हेर्नुहोस् - उन्नत सम्पादक (हेर्नुहोस् - उन्नत सम्पादक), हामी खाली अनुरोधको सम्पूर्ण M-कोड मेटाउँछौं र त्यहाँ हाम्रो सुपरफंक्शनको कोड टाँस्छौं:

पावर क्वेरीमा नियमित अभिव्यक्ति (RegExp)

आफ्नो हात हेर्नुहोस्:

पहिलो पङ्क्तिमा, हामी भन्छौं कि हाम्रो प्रकार्यमा तीन पाठ तर्कहरू हुनेछन्: txt - मूल पाठ विश्लेषण गरिँदै, रेगेक्स - नियमित अभिव्यक्ति ढाँचा, सीमा - परिणामहरू प्रदर्शन गर्नको लागि सीमांकक वर्ण।

अर्को हामी प्रकार्य कल वेब पृष्ठ, यसको तर्कमा माथि वर्णन गरिएको JavaScript कोड बनाउँदै। हामी हाम्रो चर आर्गुमेन्टहरू कोडमा पेस्ट र प्रतिस्थापन गर्छौं।

टुक्रा:

[डेटा]{0}[बच्चाहरू]{0}[बच्चाहरू]{1}[पाठ]{0}

… हामीलाई चाहिने नतिजाहरूको साथ तालिकामा "फर्न" आवश्यक छ। बिन्दु भनेको कार्य हो वेब पृष्ठ नतिजाको रूपमा, यसले वेब पृष्ठको संरचना दोहोर्याउने धेरै नेस्टेड तालिकाहरू उत्पादन गर्दछ। M-कोडको यो टुक्रा बिना, हाम्रो प्रकार्यले यसलाई आउटपुट गर्नेछ:

पावर क्वेरीमा नियमित अभिव्यक्ति (RegExp)

... र हामीले शब्द धेरै पटक क्लिक गर्नुपर्नेछ तालिका, स्तम्भहरूमा रहेको चाइल्ड नेस्टेड तालिकाहरूमा क्रमिक रूपमा "पढ्दै" बच्चाहरु:

पावर क्वेरीमा नियमित अभिव्यक्ति (RegExp)

यो सबै उद्धरणको सट्टा, हामी तुरुन्तै हाम्रो प्रकार्यको कोडमा संकेत गर्छौं जुन तालिका र स्तम्भ (पाठ) हामीलाई चाहिन्छ।

यहाँ, वास्तवमा, सबै रहस्यहरू छन्। यो बटन थिच्न बाँकी छ समाप्त झ्यालमा उन्नत सम्पादक, जहाँ हामीले हाम्रो कोड सम्मिलित गर्यौं, र तपाईं सबैभन्दा स्वादिष्टमा अगाडि बढ्न सक्नुहुन्छ - काममा हाम्रो प्रकार्य प्रयास गर्नुहोस्।

यहाँ केही बीज उदाहरणहरू छन्।

उदाहरण १. भुक्तानी विवरणबाट खाता नम्बर र मिति पुन: प्राप्त गर्दै

हामीसँग भुक्तानीहरूको विवरण (उद्देश्य) सहितको बैंक स्टेटमेन्ट छ, जहाँ तपाईंले अलग-अलग स्तम्भहरूमा भुक्तान इनभ्वाइसहरूको संख्या र मितिहरू निकाल्नुपर्छ:

पावर क्वेरीमा नियमित अभिव्यक्ति (RegExp)

हामी तालिकालाई पावर क्वेरीमा मानक तरिकामा लोड गर्छौं डाटा - तालिका/दायराबाट (डेटा - T. बाटसक्षम/आरपरी).

त्यसपछि हामी हाम्रो प्रकार्य मार्फत गणना गरिएको स्तम्भ थप्छौं स्तम्भ थप्नुहोस् - कस्टम प्रकार्यलाई कल गर्नुहोस् (स्तम्भ थप्नुहोस् - अनुकूलन प्रकार्य आह्वान गर्नुहोस्) र यसको तर्कहरू प्रविष्ट गर्नुहोस्:

पावर क्वेरीमा नियमित अभिव्यक्ति (RegExp)

नियमित अभिव्यक्तिको रूपमा (तर्क रेगेक्स) हामीले प्रयोग गर्ने टेम्प्लेट:

(घ {3,5}|d{2}.d{2}.d{4})

… मानव भाषामा अनुवादित अर्थ: 

३ देखि ५ अंक सम्मका नम्बरहरू (खाता नम्बरहरू)

or

फारमका टुक्राहरू "2-बिट नम्बर - बिन्दु - 2-बिट नम्बर - बिन्दु - 4-बिट नम्बर", त्यो हो, फारम DD.MM.YYYY को मितिहरू।

एक सीमांकक वर्णको रूपमा (तर्क सीमा) एक अर्धविराम प्रविष्ट गर्नुहोस्।

क्लिक गर्नु पछि OK हाम्रो जादुई प्रकार्यले हाम्रो नियमित अभिव्यक्ति अनुसार सबै प्रारम्भिक डेटाको विश्लेषण गर्दछ र हाम्रो लागि भेट्टाइएका नम्बरहरू र इनभ्वाइसहरूको मितिहरूको साथ स्तम्भ बनाउँछ:

पावर क्वेरीमा नियमित अभिव्यक्ति (RegExp)

यो आदेश प्रयोग गरेर अर्धविराम द्वारा अलग गर्न बाँकी छ गृह - विभाजन स्तम्भ - डेलिमिटर द्वारा (गृह - विभाजन स्तम्भ - सीमांकक द्वारा) र हामीले चाहेको कुरा पाउँछौं:

पावर क्वेरीमा नियमित अभिव्यक्ति (RegExp)

सुन्दरता!

उदाहरण २: पाठबाट इमेल ठेगानाहरू निकाल्नुहोस्

मानौं हामीसँग प्रारम्भिक डेटाको रूपमा निम्न तालिका छ:

पावर क्वेरीमा नियमित अभिव्यक्ति (RegExp)

... जहाँबाट हामीले त्यहाँ फेला परेका इमेल ठेगानाहरू निकाल्न आवश्यक छ (स्पष्टताको लागि, मैले पाठमा रातोमा हाइलाइट गरें)।

अघिल्लो उदाहरणमा जस्तै, हामी तालिकालाई पावर क्वेरीमा मानक तरिकामा लोड गर्छौं डाटा - तालिका/दायराबाट (डेटा - T. बाटसक्षम/आरपरी).

त्यसपछि हामी हाम्रो प्रकार्य मार्फत गणना गरिएको स्तम्भ थप्छौं स्तम्भ थप्नुहोस् - कस्टम प्रकार्यलाई कल गर्नुहोस् (स्तम्भ थप्नुहोस् - अनुकूलन प्रकार्य आह्वान गर्नुहोस्) र यसको तर्कहरू प्रविष्ट गर्नुहोस्:

पावर क्वेरीमा नियमित अभिव्यक्ति (RegExp)

इमेल ठेगानाहरू पार्सिङ गर्नु अझ गाह्रो काम हो र यसलाई समाधान गर्नको लागि विभिन्न स्तरका दुःस्वप्नहरूको नियमित अभिव्यक्तिहरूको गुच्छा छ। मैले सरल विकल्पहरू मध्ये एउटा प्रयोग गरें - आदर्श होइन, तर धेरै जसो केसहरूमा काम गर्ने:

[w|.|-]*@w*[w|.]*

विभाजकको रूपमा (सीमा) तपाईले सेमीकोलन र स्पेस प्रविष्ट गर्न सक्नुहुन्छ।

थिच्नुस OK र हामी मूल पाठ "पोरिज" बाट निकालिएको इ-मेल ठेगानाहरू सहितको स्तम्भ पाउँछौं:

पावर क्वेरीमा नियमित अभिव्यक्ति (RegExp)

जादू!

PS

भनाइ अनुसार: "त्यहाँ कुनै राम्रो चीज छैन जुन अझ राम्रो बनाउन सकिँदैन।" पावर क्वेरी आफैमा राम्रो छ, र जब नियमित अभिव्यक्तिहरूसँग जोडिन्छ, यसले हामीलाई कुनै पनि पाठ डेटा प्रशोधन गर्न पूर्ण रूपमा अवास्तविक शक्ति र लचिलोपन दिन्छ। मलाई आशा छ कि माइक्रोसफ्टले कुनै दिन Power Query र Power BI अपडेटहरूमा RegExp समर्थन थप्नेछ र ट्याम्बोरिनका साथ माथिका सबै नृत्यहरू विगतको कुरा बन्नेछ। खैर, अहिलेको लागि, हो।

म यो पनि थप्न चाहन्छु कि यो साइट https://regexr.com/ मा नियमित अभिव्यक्ति संग खेल्न सुविधाजनक छ - ठीक अनलाइन सम्पादक मा। त्यहाँ खण्डमा सामुदायिक ढाँचाहरू त्यहाँ सबै अवसरहरूको लागि तयार-निर्मित नियमित मौसमहरूको ठूलो संख्या हो। प्रयोग - नियमित अभिव्यक्तिको सबै शक्ति अब Power Query मा तपाईंको सेवामा छ!

  • रेगुलर एक्सप्रेशनहरू (RegExp) के हुन् र तिनीहरूलाई Excel मा कसरी प्रयोग गर्ने
  • Power Query मा अस्पष्ट पाठ खोज
  • पावर क्वेरी प्रयोग गरेर विभिन्न फाइलहरूबाट तालिकाहरू जम्मा गर्दै

जवाफ छाड्नुस्