Maneno ya Kawaida (RegExp) katika Hoja ya Nishati

Ikiwa angalau unajua maneno ya kawaida, basi hauitaji kuyatangaza. Ikiwa hauko katika somo kabisa, basi misemo ya kawaida (Maelezo ya Kawaida = RegExp = "regexps" = "regulars") ni lugha ambayo, kwa kutumia herufi maalum na sheria, vifungu vidogo vinavyohitajika hutafutwa katika maandishi, hutolewa. au kubadilishwa na maandishi mengine. Hii ni chombo chenye nguvu sana na kizuri, utaratibu wa ukubwa wa juu kuliko njia nyingine zote za kufanya kazi na maandishi.

Tayari nimeelezea kwa undani na kwa kundi la mifano kutoka kwa maisha jinsi unaweza kuongeza usaidizi wa kujieleza mara kwa mara kwa Excel kwa kutumia macros rahisi - ikiwa haujasoma makala hii, ninapendekeza sana kwamba uisome kabla ya kuendelea. Utagundua mambo mengi mapya, ninakuhakikishia 🙂

Hata hivyo, swali linabaki wazi - jinsi ya kuongeza uwezo wa kutumia maneno ya kawaida katika Swala la Nguvu? Swala la Nguvu, bila shaka, ni nzuri peke yake na inaweza kufanya mengi kwa maandishi (kukata, kuunganisha, kusafisha, nk), lakini ikiwa ungeweza kuvuka kwa nguvu ya maneno ya kawaida, itakuwa tu bomu.

Kwa bahati mbaya, hakuna vitendaji vilivyojumuishwa vya kufanya kazi na RegExps katika Hoja ya Nguvu, na usaidizi rasmi wa Microsoft na usaidizi wa kiufundi hujibu swali hili kwa hasi. Walakini, kuna njia ya kuzunguka kizuizi hiki 🙂

Kiini cha njia hiyo

Wazo kuu ni rahisi kudharau.

Katika orodha ya uwezo wa Swala la Nguvu iliyojengwa, kuna kazi Ukurasa.Wavuti. Maelezo ya chaguo hili kwenye tovuti rasmi ya usaidizi ya Microsoft ni mafupi sana:

Maneno ya Kawaida (RegExp) katika Hoja ya Nishati

Ikitafsiriwa, hii itakuwa: "Hurejesha yaliyomo kwenye hati ya HTML iliyogawanywa katika miundo ya vijenzi vyake, pamoja na uwakilishi wa hati kamili na mwili wake baada ya lebo kuondolewa." Kwa hivyo maelezo, kusema ukweli.

Kawaida kazi hii hutumiwa wakati wa kuingiza data kutoka kwa wavuti na inabadilishwa kiotomatiki, kwa mfano, tunapochagua kwenye kichupo. Data Amri Kutoka kwa Mtandao (Data - Kutoka kwa wavuti). Tunatoa chaguo la kukokotoa ukurasa wa wavuti kama hoja, na huturudishia yaliyomo katika mfumo wa majedwali, ikiwa imefuta vitambulisho vyote hapo awali.

Kile ambacho msaada hausemi ni kwamba kwa kuongeza lugha ya alama ya HTML kazi Ukurasa.Wavuti inasaidia hati za JavaScript, ambayo sasa inapatikana kila mahali kwenye tovuti kwenye mtandao. Na JavaScript, kwa upande wake, imeweza kufanya kazi na misemo ya kawaida kila wakati na ina vitendaji vya ndani vya RegExps! Kwa hivyo ili kutekeleza matamshi ya kawaida katika Hoja ya Nishati, tutahitaji kulisha utendakazi wa Web.Page kama hoja kwa programu ndogo ya JavaScript ambayo itafanya kazi yote ya Hoja ya Nishati.

Inaonekanaje katika JavaScript safi

Kuna mafunzo mengi ya kina juu ya kufanya kazi na maneno ya kawaida katika JavaScript kwenye mtandao (kwa mfano, moja, mbili).

Kwa kifupi na kilichorahisishwa, nambari ya JavaScript itaonekana kama hii:

Maneno ya Kawaida (RegExp) katika Hoja ya Nishati

hapa:

  • var str = 'Lipa bili 123 na 789 kwa soseji'; - tengeneza kigezo str na kuikabidhi matini chanzi ambayo tutachambua.
  • var muundo = /d+/gi; - tengeneza usemi wa kawaida na uweke katika kigezo mfano.

    Usemi huo unaanza na mfyekaji (/).

    Usemi wenyewe hapa, kwa mfano, ni d+ inasimamia mfuatano wowote wa tarakimu.

    Kupitia sehemu baada ya usemi, kuna vigezo vya ziada vya utaftaji (virekebishaji) - vinaweza kubainishwa kwa mpangilio wowote:

    • g - inamaanisha utafutaji wa kimataifa, yaani, baada ya kupata mechi, unapaswa kuacha, lakini endelea utafutaji hadi mwisho wa maandishi. Ikiwa kirekebishaji hiki hakitawekwa, basi hati yetu itarudisha tu mechi ya kwanza (123)
    • i - tafuta bila kuzingatia kesi ya barua
    • m - utaftaji wa safu nyingi (hutumiwa wakati maandishi ya chanzo yamegawanywa katika mistari kadhaa)
  • var result = str.match(pattern).jiunge(';'); - tafuta katika maandishi chanzo (str) kwa usemi uliotolewa wa kawaida (mfano) na uweke matokeo kwa kutofautisha kusababisha, kuziunganisha na semicolon kwa kutumia amri kujiunga na
  • hati.andika(matokeo); - onyesha yaliyomo kwenye kigezo cha matokeo

Pia kumbuka kuwa mifuatano ya maandishi (bila kujumuisha misemo ya kawaida) katika JavaScript imefungwa katika viapostrofi, si nukuu kwa vile ziko kwenye Hoja ya Nguvu au VBA.

Katika matokeo, hati hii itatupa kama matokeo nambari zote zinazopatikana kwenye maandishi chanzo:

123, 789

Kozi fupi ya JavaScript imekwisha, asanteni nyote. Natumai utapata mantiki 🙂

Inabakia kuhamisha ujenzi huu kwa Hoja ya Nishati.

Tafuta na Utoe Utendakazi wa Maandishi kwa Usemi wa Kawaida katika Hoja ya Nguvu

Tunafanya yafuatayo:

1. Fungua Excel na uunde Hoja mpya ya Nguvu tupu kwenye kichupo Data - Pata data / Unda ombi - Kutoka kwa vyanzo vingine - Ombi tupu (Data - Pata data / swala jipya - Kutoka kwa vyanzo vingine - Hoja tupu). Ikiwa una toleo la zamani la Excel 2010-2013 na Hoja ya Nguvu ambayo huna kijengwa-ndani, lakini kilisakinishwa kama programu-jalizi tofauti, basi yote haya yatakuwa kwenye kichupo. Hoja ya NguvuNa sio Data.

2. Katika dirisha tupu la mhariri wa swala linalofungua, kwenye paneli ya kulia, ingiza mara moja jina la kazi yetu ya baadaye (kwa mfano, fxRegExpExtract)

Maneno ya Kawaida (RegExp) katika Hoja ya Nishati

3. Twende kwenye kichupo Tazama - Mhariri wa hali ya juu (Angalia - Mhariri wa hali ya juu), tunafuta msimbo mzima wa M wa ombi tupu na kubandika msimbo wa utendakazi wetu mkuu hapo:

Maneno ya Kawaida (RegExp) katika Hoja ya Nishati

Tazama mikono yako:

Katika mstari wa kwanza, tunasema kwamba kazi yetu itakuwa na hoja tatu za maandishi: txt - maandishi asilia yanachambuliwa, regex - muundo wa kawaida wa kujieleza, delim - kibambo cha kuweka mipaka cha kuonyesha matokeo.

Ifuatayo tunaita kazi Ukurasa.Wavuti, kutengeneza msimbo wa JavaScript ulioelezwa hapo juu katika hoja yake. Tunabandika na kubadilisha hoja zetu tofauti kwenye msimbo.

Kipande:

[Data]{0}[Watoto]{0}[Watoto]{1}[Maandishi]{0}

… inahitajika ili “kuanguka” kwenye jedwali na matokeo tunayohitaji. Jambo ni kwamba kazi Ukurasa.Wavuti kama matokeo, hutoa meza kadhaa zilizowekwa kiota ambazo hurudia muundo wa ukurasa wa wavuti. Bila kipande hiki cha nambari ya M, kazi yetu ingetoa hii:

Maneno ya Kawaida (RegExp) katika Hoja ya Nishati

... na itabidi tubofye neno mara kadhaa Meza, mfululizo "kuanguka" kwenye jedwali za watoto katika safu wima Watoto:

Maneno ya Kawaida (RegExp) katika Hoja ya Nishati

Badala ya nukuu hii yote, tunaonyesha mara moja katika nambari ya kazi yetu ambayo iliweka meza na safu wima (Nakala) Tunahitaji.

Hapa, kwa kweli, ni siri zote. Inabakia kushinikiza kifungo Kumaliza kwenye dirisha mhariri wa hali ya juu, ambapo tuliingiza msimbo wetu, na unaweza kuendelea na ladha zaidi - jaribu kazi yetu kwenye kazi.

Hapa kuna mifano michache ya mbegu.

Mfano 1. Kurejesha nambari ya akaunti na tarehe kutoka kwa maelezo ya malipo

Tuna taarifa ya benki yenye maelezo (madhumuni) ya malipo, ambapo unahitaji kutoa nambari na tarehe za ankara zilizolipwa katika safu wima tofauti:

Maneno ya Kawaida (RegExp) katika Hoja ya Nishati

Tunapakia jedwali kwenye Hoja ya Nguvu kwa njia ya kawaida Data - Kutoka kwa Jedwali / Masafa (Takwimu - kutoka kwa Tuwezo/Rmalaika).

Kisha tunaongeza safu iliyohesabiwa na kazi yetu kupitia Ongeza Safu - Kazi Maalum ya Wito (Ongeza Safu - Omba Utendaji Maalum) na ingiza hoja zake:

Maneno ya Kawaida (RegExp) katika Hoja ya Nishati

Kama usemi wa kawaida (hoja regex) template tunayotumia:

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

… kutafsiriwa katika maana ya lugha ya binadamu: 

nambari kutoka kwa nambari 3 hadi 5 (nambari za akaunti)

or

vipande vya fomu "nambari 2-bit - nukta - nambari 2 - nukta - nambari 4", yaani, tarehe za fomu DD.MM.YYYY.

Kama mhusika wa kuweka mipaka (hoja delim) ingiza semicolon.

Baada ya kubonyeza OK kazi yetu ya uchawi inachanganua data yote ya awali kulingana na usemi wetu wa kawaida na kuunda safu kwa ajili yetu na nambari zilizopatikana na tarehe za ankara:

Maneno ya Kawaida (RegExp) katika Hoja ya Nishati

Inabakia kuitenganisha kwa semicolon kwa kutumia amri Nyumbani - Gawanya Safu - Na Delimiter (Nyumbani - Gawanya safu wima - Kwa kikomo) na tunapata kile tulichotaka:

Maneno ya Kawaida (RegExp) katika Hoja ya Nishati

Uzuri!

Mfano 2: Toa anwani za barua pepe kutoka kwa maandishi

Tuseme tunayo jedwali lifuatalo kama data ya awali:

Maneno ya Kawaida (RegExp) katika Hoja ya Nishati

… kutoka ambapo tunahitaji kutoa barua pepe zinazopatikana hapo (kwa uwazi, niliangazia kwa rangi nyekundu katika maandishi).

Kama katika mfano uliopita, tunapakia jedwali kwenye Hoja ya Nguvu kwa njia ya kawaida kupitia Data - Kutoka kwa Jedwali / Masafa (Takwimu - kutoka kwa Tuwezo/Rmalaika).

Kisha tunaongeza safu iliyohesabiwa na kazi yetu kupitia Ongeza Safu - Kazi Maalum ya Wito (Ongeza Safu - Omba Utendaji Maalum) na ingiza hoja zake:

Maneno ya Kawaida (RegExp) katika Hoja ya Nishati

Kuchanganua anwani za barua pepe ni kazi ngumu zaidi na kuna rundo la misemo ya kawaida ya viwango tofauti vya jinamizi ili kulitatua. Nilitumia moja ya chaguzi rahisi - sio bora, lakini inafanya kazi katika hali nyingi:

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

Kama mgawanyiko (delim) unaweza kuingiza semicolon na nafasi.

Bonyeza kwenye OK na tunapata safu iliyo na anwani za barua pepe zilizotolewa kutoka kwa maandishi asilia "uji":

Maneno ya Kawaida (RegExp) katika Hoja ya Nishati

Uchawi!

PS

Kama msemo unavyosema: "Hakuna kitu kizuri kama hicho ambacho hakiwezi kufanywa bora zaidi." Hoja ya Nguvu ni nzuri yenyewe, na inapojumuishwa na misemo ya kawaida, hutupatia nguvu isiyo ya kweli kabisa na kubadilika katika kuchakata data yoyote ya maandishi. Natumai Microsoft siku moja itaongeza usaidizi wa RegExp katika Hoji ya Nguvu na masasisho ya Power BI na dansi zote zilizo hapo juu zilizo na matari zitasahaulika. Naam, kwa sasa, ndiyo.

Pia ninataka kuongeza kuwa ni rahisi kucheza na maneno ya kawaida kwenye tovuti https://regexr.com/ - kwenye kihariri cha mtandaoni. Hapo kwenye sehemu Miundo ya Jumuiya Kuna idadi kubwa ya misimu ya kawaida iliyotengenezwa tayari kwa hafla zote. Jaribio - uwezo wote wa maneno ya kawaida sasa uko kwenye huduma yako katika Hoja ya Nguvu!

  • Ni maneno gani ya kawaida (RegExp) na jinsi ya kuyatumia katika Excel
  • Utafutaji wa maandishi usioeleweka katika Hoja ya Nguvu
  • Kukusanya meza kutoka faili tofauti kwa kutumia Power Query

Acha Reply