پاور سوال ۾ باقاعده ايڪسپريس (RegExp)

جيڪڏهن توهان باقاعده اظهار سان گهٽ ۾ گهٽ ٿورڙي واقف آهيو، پوء توهان کي انهن کي اشتهار ڏيڻ جي ضرورت ناهي. جيڪڏهن توهان موضوع ۾ ڪافي نه آهيو، ته پوءِ باقاعده اظهار (Regular Expressions = RegExp = "regexps" = "Regulars") هڪ ٻولي آهي جتي، خاص ڪردارن ۽ ضابطن کي استعمال ڪندي، متن ۾ گهربل سبسٽرنگ ڳوليا ويندا آهن، اهي ڪڍيا ويندا آهن. يا ٻئي متن سان تبديل ڪيو ويو. هي هڪ تمام طاقتور ۽ خوبصورت اوزار آهي، متن سان ڪم ڪرڻ جي ٻين سڀني طريقن کان اعلي معيار جو هڪ حڪم.

مان اڳ ۾ ئي تفصيل سان بيان ڪري چڪو آهيان ۽ زندگيءَ جي ڪيترن ئي مثالن سان ته ڪيئن توهان ايڪسل ۾ سادي ميڪرو استعمال ڪندي باقاعدي اظهار جي مدد شامل ڪري سگهو ٿا - جيڪڏهن توهان هي مضمون نه پڙهيو آهي، مان توهان کي صلاح ڏيان ٿو ته توهان اڳتي وڌڻ کان پهريان ان کي پڙهو. توهان تمام گهڻيون نيون شيون ڳوليندا، مان ضمانت ڏيان ٿو 🙂

بهرحال، سوال کليل رهي ٿو - پاور سوال ۾ باقاعده اظهار کي استعمال ڪرڻ جي صلاحيت ڪيئن شامل ڪجي؟ پاور سوال، يقينا، پنهنجو پاڻ تي سٺو آهي ۽ متن سان تمام گهڻو ڪري سگهي ٿو (ڪٽڻ، گلونگ، صفائي، وغيره)، پر جيڪڏهن توهان ان کي باقاعده اظهار جي طاقت سان پار ڪري سگهو ٿا، اهو صرف هڪ بم هوندو.

بدقسمتي سان، پاور سوال ۾ RegExps سان ڪم ڪرڻ لاءِ ڪو به بلٽ ان فنڪشن نه آهي، ۽ سرڪاري Microsoft مدد ۽ ٽيڪنيڪل سپورٽ هن سوال جو جواب منفي ۾ ڏئي ٿو. بهرحال، هن حد جي چوڌاري هڪ طريقو آهي 🙂

طريقيڪار جي ذات

بنيادي خيال بي عزتي ڪرڻ سادو آهي.

تعمير ٿيل پاور سوال جي صلاحيتن جي لسٽ ۾، اتي ھڪڙو فنڪشن آھي ويب پيج. سرڪاري Microsoft مدد سائيٽ تي هن فنڪشن جي وضاحت انتهائي جامع آهي:

پاور سوال ۾ باقاعده ايڪسپريس (RegExp)

ترجمو ٿيل، هي هوندو: "ٽيگ هٽائڻ کان پوءِ مڪمل دستاويز ۽ ان جي باڊي جي نمائندگي ان جي جزن جي جوڙجڪ ۾ ورهايل HTML دستاويز جي مواد کي واپس ڪري ٿو." ايترو وضاحت، صاف صاف.

عام طور تي هي فنڪشن استعمال ڪيو ويندو آهي جڏهن ويب تان ڊيٽا درآمد ڪندي ۽ خودڪار طريقي سان متبادل ٿي ويندي آهي، مثال طور، جڏهن اسان ٽيب تي چونڊيو ڊيٽا حڪم انٽرنيٽ تان (ڊيٽا - ويب کان). اسان فنڪشن کي هڪ ويب پيج ڏيون ٿا هڪ دليل جي طور تي، ۽ اهو ان جو مواد اسان کي ٽيبل جي صورت ۾ واپس ڪري ٿو، اڳ ۾ سڀني ٽيگ کي صاف ڪرڻ کان پوء.

ڇا مدد نه ٿو چوي ته HTML مارڪ اپ ٻولي کان علاوه فعل ويب پيج JavaScript اسڪرپٽ کي سپورٽ ڪري ٿو، جيڪو هاڻي انٽرنيٽ تي ويب سائيٽن تي عام آهي. ۽ جاوا اسڪرپٽ، موڙ ۾، هميشه باقاعده اظهار سان ڪم ڪرڻ جي قابل ٿي چڪي آهي ۽ RegExps لاءِ بلٽ-ان افعال آهن! تنهن ڪري Power Query ۾ ريگيولر ايڪسپريشنز کي لاڳو ڪرڻ لاءِ، اسان کي Web.Page فنڪشن کي فيڊ ڪرڻ جي ضرورت پوندي هڪ دليل جي طور تي هڪ ننڍڙي جاوا اسڪرپٽ پروگرام جيڪو پاور ڪوئيري لاءِ سمورو ڪم ڪندو.

اهو خالص جاوا اسڪرپٽ ۾ ڇا ڏسڻ ۾ اچي ٿو

انٽرنيٽ تي جاوا اسڪرپٽ ۾ باقاعده اظهار سان ڪم ڪرڻ لاءِ ڪيترائي تفصيلي سبق آهن (مثال طور، هڪ، ٻه).

مختصر ۽ آسانيءَ ۾، جاوا اسڪرپٽ ڪوڊ هن طرح نظر ايندو:

پاور سوال ۾ باقاعده ايڪسپريس (RegExp)

هتي

  • var str = 'ساساج لاءِ 123 ۽ 789 بل ادا ڪريو'؛ - هڪ متغير ٺاهيو آهي ۽ ان کي ماخذ متن تفويض ڪريو جنهن جو اسين تجزيو ڪنداسين.
  • var نموني = /d +/gi؛ - هڪ باقاعده اظهار ٺاهيو ۽ ان کي متغير ۾ رکو نموني.

    اظهار هڪ سليش (/) سان شروع ٿئي ٿو.

    خود اظهار هتي، مثال طور، آهي d+ انگن جي ڪنهن به ترتيب لاءِ بيٺل آهي.

    اظهار کان پوءِ فريڪشن ذريعي، اضافي سرچ پيٽرولر (موڊيفائر) آهن - انهن کي ڪنهن به ترتيب ۾ بيان ڪري سگهجي ٿو:

    • g - مطلب عالمي ڳولا، يعني هڪ ميچ ڳولڻ کان پوء، توهان کي روڪڻ نه گهرجي، پر متن جي آخر تائين ڳولا جاري رکو. جيڪڏهن هي ترميمي مقرر نه ڪيو ويو آهي، ته پوء اسان جي اسڪرپٽ صرف پهرين ميچ کي واپس آڻيندي (123)
    • i - خطن جي صورت ۾ بغير ڳولها
    • m - گھڻن لائنن جي ڳولا (استعمال ڪيو ويو جڏهن ماخذ متن ڪيترن ئي لائينن ۾ ورهايل آهي)
  • var نتيجو = str.match (نمو) شامل ڪريو ('؛')؛ - سرچ متن ۾ سرچ ڪريو (آهيڏنل باقاعده اظهار جي ذريعي (نموني) ۽ نتيجن کي متغير ۾ رکو نتيجو، انهن کي ڪمانڊ استعمال ڪندي سيميڪولن سان ڳنڍيندي شامل ٿيو
  • document.write(نتيجو)؛ - نتيجو متغير جو مواد ڏيکاريو

اهو پڻ نوٽ ڪريو ته جاوا اسڪرپٽ ۾ ٽيڪسٽ اسٽرنگز (باقاعده اظهارن کانسواءِ) apostrophes ۾ بند ٿيل آهن، نه ڪي اقتباس جيئن اهي Power Query يا VBA ۾ آهن.

ٻاھر نڪرڻ تي، ھي اسڪرپٽ اسان کي ڏيندو نتيجي طور سڀني نمبرن جو ماخذ متن ۾ مليو:

123، 789

جاوا اسڪرپٽ مختصر ڪورس ختم ٿي چڪو آهي، توهان سڀني جي مهرباني. اميد ته توهان منطق حاصل ڪري سگهو ٿا 🙂

اهو باقي رهي ٿو ته هن تعمير کي پاور سوال ڏانهن منتقل ڪيو وڃي.

پاور سوال ۾ ريگيولر ايڪسپريشن ذريعي ٽيڪسٽ فنڪشن ڳولھيو ۽ ڪڍو

اسان هيٺيان ڪندا آهيون:

1. Excel کوليو ۽ ٽيب ۾ هڪ نئون خالي پاور سوال ٺاهيو ڊيٽا - ڊيٽا حاصل ڪريو / درخواست ٺاهيو - ٻين ذريعن کان - خالي درخواست (ڊيٽا - ڊيٽا حاصل ڪريو / نئون سوال - ٻين ذريعن کان - خالي سوال). جيڪڏهن توهان وٽ ايڪسل 2010-2013 جو پراڻو ورزن آهي ۽ پاور ڪوئيري توهان وٽ بلٽ ان نه آهي، پر هڪ الڳ ايڊ-ان طور انسٽال ٿيل آهي، ته پوءِ اهو سڀ ڪجهه ٽيب تي هوندو. طاقت جي طلب۽ نه ڊيٽا.

2. سوال ايڊيٽر جي خالي ونڊو ۾ جيڪو کلي ٿو، ساڄي پينل ۾، فوري طور تي اسان جي مستقبل جي فنڪشن جو نالو داخل ڪريو (مثال طور، fxRegExpExtract)

پاور سوال ۾ باقاعده ايڪسپريس (RegExp)

3. اچو ته ٽيب ڏانهن وڃو ڏسو - ڳوڙهي ايڊيٽر (ڏسو - ڳوڙهي ايڊيٽر)، اسان خالي درخواست جي مڪمل M-code کي ختم ڪريون ٿا ۽ اتي اسان جي سپر فنڪشن جو ڪوڊ پيسٽ ڪريون ٿا:

پاور سوال ۾ باقاعده ايڪسپريس (RegExp)

پنهنجا هٿ ڏسو:

پهرين لائن ۾، اسان چئون ٿا ته اسان جي فنڪشن ۾ ٽي متن دليل هوندا: txt - اصل متن جو تجزيو ڪيو پيو وڃي، ريجڪس - باقاعده اظهار جو نمونو، ڊيلم - نتيجا ڏيکارڻ لاءِ ڊيليٽر ڪردار.

اڳتي هلي اسان فنڪشن کي سڏين ٿا ويب پيج, مٿي بيان ڪيل جاوا اسڪرپٽ ڪوڊ ٺاهيندي ان جي دليل ۾. اسان ڪوڊ ۾ اسان جي متغير دليلن کي پيسٽ ۽ متبادل بڻايو.

ٽڪرو:

[ڊيٽا]{0}[ٻارن]{0}[ٻارن]{1}[ٽيڪسٽ]{0}

… جي ضرورت آهي ”گرڻ“ جي جدول ۾ اسان جي گهربل نتيجن سان. ڳالهه اها آهي ته فنڪشن ويب پيج نتيجي طور، اهو ڪيترن ئي nested جدولن کي پيدا ڪري ٿو جيڪو ويب پيج جي جوڙجڪ کي ورجائي ٿو. ايم-ڪوڊ جي هن ٽڪرا کان سواء، اسان جو فنڪشن هن کي ڪڍي ڇڏيندو:

پاور سوال ۾ باقاعده ايڪسپريس (RegExp)

... ۽ اسان کي لفظ کي ڪيترائي ڀيرا ڪلڪ ڪرڻو پوندو جدول, ڪاميابي سان "گرڻ جي ذريعي" ڪالمن ۾ چائلڊ nested جدولن ۾ ٻار:

پاور سوال ۾ باقاعده ايڪسپريس (RegExp)

ان سموري اقتباس جي بدران، اسان فوري طور تي اسان جي فنڪشن جي ڪوڊ ۾ اشارو ڪريون ٿا جنهن ۾ ٽيبل ۽ ڪالم (متن) اسانکي ضرورت آهي.

هتي، حقيقت ۾، سڀ راز آهن. اهو بٽڻ کي دٻائڻ لاء رهي ٿو ختم ڪر ونڊو ۾ ترقي يافته ايڊيٽر, جتي اسان پنهنجو ڪوڊ داخل ڪيو، ۽ توهان اڳتي وڌائي سگهو ٿا تمام مزيدار - ڪم تي اسان جي فنڪشن کي آزمايو.

هتي ٻج جا ٻه مثال آهن.

مثال 1. ادائگي جي تفصيل مان اڪائونٽ نمبر ۽ تاريخ حاصل ڪرڻ

اسان وٽ ادائگي جي وضاحت (مقصد) سان گڏ هڪ بينڪ اسٽيٽمينٽ آهي، جتي توهان کي الڳ ڪالمن ۾ ادا ڪيل انوائس جا انگ ۽ تاريخون ڪڍڻ گهرجن:

پاور سوال ۾ باقاعده ايڪسپريس (RegExp)

اسان ٽيبل کي پاور سوال ۾ معياري طريقي سان لوڊ ڪريون ٿا ڊيٽا - ٽيبل / رينج مان (ڊيٽا - ٽيقابل / آرفرشتو).

ان کان پوء اسان هڪ ڳڻپيوڪر ڪالم شامل ڪندا آهيون اسان جي فنڪشن سان ڪالم شامل ڪريو - ڪسٽم فنڪشن ڪال ڪريو (ڪالم شامل ڪريو - ڪسٽم فنڪشن کي دعوت ڏيو) ۽ ان جا دليل داخل ڪريو:

پاور سوال ۾ باقاعده ايڪسپريس (RegExp)

باقاعده اظهار جي طور تي (دليل ريجڪس) ٽيمپليٽ اسان استعمال ڪندا آهيون:

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

… انساني ٻوليءَ ۾ ترجمو ٿيل معنيٰ: 

نمبر 3 کان 5 انگن تائين (اڪائونٽ نمبر)

or

فارم جا ٽڪرا "2-bit نمبر - پوائنٽ - 2-bit نمبر - پوائنٽ - 4-bit نمبر"، يعني، فارم جي تاريخون DD.MM.YYYY.

هڪ حد بندي ڪندڙ ڪردار جي طور تي (دليل ڊيلم) سيميڪولن داخل ڪريو.

تي ڪلڪ ڪرڻ کان پوء OK اسان جو جادو فنڪشن اسان جي باقاعده اظهار جي مطابق سڀني شروعاتي ڊيٽا جو تجزيو ڪري ٿو ۽ اسان جي لاء هڪ ڪالم ٺاهي ٿو جيڪو مليو نمبر ۽ انوائس جي تاريخن سان:

پاور سوال ۾ باقاعده ايڪسپريس (RegExp)

اهو حڪم استعمال ڪندي سيميڪولن ذريعي ان کي الڳ ڪرڻ لاءِ رهي ٿو گھر - تقسيم ڪالمن - ڊيليميٽر طرفان (گهر - ڪالم ورهايو - ڊيليميٽر طرفان) ۽ اسان حاصل ڪيو جيڪو اسان چاهيون ٿا:

پاور سوال ۾ باقاعده ايڪسپريس (RegExp)

خوبصورتي

مثال 2: ٽيڪسٽ مان اي ميل ايڊريس ڪڍو

فرض ڪريو اسان وٽ ھيٺ ڏنل جدول آھي شروعاتي ڊيٽا طور:

پاور سوال ۾ باقاعده ايڪسپريس (RegExp)

... جتان اسان کي اُتي مليل اي ميل ايڊريس ڪڍڻ گهرجن (وضاحت لاءِ، مون انهن کي متن ۾ ڳاڙهي رنگ ۾ نمايان ڪيو).

جيئن پوئين مثال ۾، اسان ٽيبل کي لوڊ ڪريون ٿا پاور سوال ۾ معياري طريقي سان ڊيٽا - ٽيبل / رينج مان (ڊيٽا - ٽيقابل / آرفرشتو).

ان کان پوء اسان هڪ ڳڻپيوڪر ڪالم شامل ڪندا آهيون اسان جي فنڪشن سان ڪالم شامل ڪريو - ڪسٽم فنڪشن ڪال ڪريو (ڪالم شامل ڪريو - ڪسٽم فنڪشن کي دعوت ڏيو) ۽ ان جا دليل داخل ڪريو:

پاور سوال ۾ باقاعده ايڪسپريس (RegExp)

اي ميل ايڊريس پارس ڪرڻ هڪ وڌيڪ ڏکيو ڪم آهي ۽ ان کي حل ڪرڻ لاءِ خوابن جي مختلف درجي جي باقاعده اظهار جو هڪ گروپ موجود آهي. مون هڪ سادي اختيارن مان استعمال ڪيو - مثالي نه، پر اڪثر ڪيسن ۾ ڪافي ڪم ڪري رهيو آهي:

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

جدا ڪندڙ (ڊيلم) توھان داخل ڪري سگھو ٿا ھڪڙو سيميڪولن ۽ ھڪڙو خلا.

تي ڪلڪ ڪريو OK ۽ اسان کي اي ميل پتي سان گڏ هڪ ڪالم ملي ٿو جيڪو اصل متن مان ڪڍيو ويو آهي ”دليا“:

پاور سوال ۾ باقاعده ايڪسپريس (RegExp)

جادو!

PS

جيئن چوڻي آهي ته: ”اهڙي ڪا به سٺي شيءِ ناهي جنهن کان وڌيڪ بهتر نه ٿي سگهي. پاور سوال پنهنجي طور تي ٿڌو آهي، ۽ جڏهن باقاعده اظهار سان گڏ، اهو اسان کي مڪمل طور تي غير حقيقي طاقت ۽ ڪنهن به ٽيڪسٽ ڊيٽا کي پروسيسنگ ۾ لچڪدار ڏئي ٿو. مون کي اميد آهي ته Microsoft ڪنهن ڏينهن Power Query ۽ Power BI اپڊيٽس ۾ RegExp سپورٽ شامل ڪندو ۽ مٿيون سڀ ڊانسون ٽمبرين سان گڏ ماضي جي شيءِ بڻجي وينديون. خير، في الحال، ها.

مان پڻ شامل ڪرڻ چاهيان ٿو ته اهو آسان آهي سائيٽ تي باقاعده اظهار سان کيڏڻ لاءِ https://regexr.com/ - صحيح آن لائن ايڊيٽر ۾. اتي سيڪشن ۾ ڪميونٽي جا نمونا سڀني موقعن لاء تيار ڪيل باقاعده موسمن جو هڪ وڏو تعداد آهي. تجربو - باقاعده اظهار جي سموري طاقت هاڻي پاور سوال ۾ توهان جي خدمت ۾ آهي!

  • باقاعده اظهار (RegExp) ڇا آهن ۽ انهن کي Excel ۾ ڪيئن استعمال ڪجي
  • پاور سوال ۾ فزي متن جي ڳولا
  • پاور سوال استعمال ڪندي مختلف فائلن مان ٽيبل گڏ ڪرڻ

جواب ڇڏي وڃو