Ekspresyon regilye (RegExp) nan Power Query

Si ou se omwen yon ti kras abitye ak ekspresyon regilye, Lè sa a, ou pa bezwen fè piblisite yo. Si ou pa byen nan sijè a, Lè sa a, ekspresyon regilye (Ekspresyon regilye = RegExp = "regexps" = "regular") se yon lang kote, lè l sèvi avèk karaktè espesyal ak règ, yo chèche sousstrings ki nesesè yo nan tèks la, yo ekstrè yo. oswa ranplase ak lòt tèks. Sa a se yon zouti trè pwisan ak bèl, yon lòd nan grandè siperyè tout lòt fason pou travay ak tèks.

Mwen te deja dekri an detay ak ak yon pakèt egzanp nan lavi ki jan ou ka ajoute sipò ekspresyon regilye nan Excel lè l sèvi avèk makro senp - si ou pa te li atik sa a, mwen trè rekòmande ke ou li li anvan ou kontinye. Ou pral dekouvri anpil bagay nouvo, mwen garanti 🙂

Sepandan, kesyon an rete louvri - ki jan yo ajoute kapasite nan sèvi ak ekspresyon regilye nan Power Query? Power Query, nan kou, bon pou kont li epi li ka fè anpil ak tèks (koupe, kole, netwaye, elatriye), men si ou ta ka kwaze li ak pouvwa a nan ekspresyon regilye, li ta jis yon bonm.

Malerezman, pa gen okenn fonksyon entegre pou travay ak RegExps nan Power Query, ak èd ofisyèl Microsoft ak sipò teknik reponn kesyon sa a an negatif. Sepandan, gen yon fason pou evite limit sa a 🙂

Sans nan metòd la

Lide prensipal la se senp pou wont.

Nan lis kapasite entegre Power Query, gen yon fonksyon Paj Web. Deskripsyon fonksyon sa a sou sit ofisyèl Microsoft èd la trè kout:

Ekspresyon regilye (RegExp) nan Power Query

Tradui, sa a ta dwe: "Retounen sa ki nan dokiman HTML dekonpoze nan estrikti eleman li yo, osi byen ke yon reprezantasyon nan dokiman an konplè ak kò li apre tag yo te retire." So-so deskripsyon, franchman.

Anjeneral fonksyon sa a itilize lè w ap enpòte done ki soti nan entènèt la epi li otomatikman ranplase, pou egzanp, lè nou chwazi sou tab la. Done Kòmandman Soti nan entènèt la (Done - Soti nan entènèt). Nou bay fonksyon an yon paj wèb kòm yon agiman, epi li retounen kontni li yo nan fòm tab la, li te deja otorize tout tags yo.

Ki sa ki èd la PA di se ke anplis langaj HTML balisage fonksyon Paj Web sipòte JavaScript scripts, ki se kounye a omniprésente sou sit entènèt sou entènèt la. Ak JavaScript, nan vire, te toujou kapab travay ak ekspresyon regilye epi li te bati-an fonksyon pou RegExps! Se konsa, aplike ekspresyon regilye nan Power Query, nou pral bezwen manje fonksyon yo Web.Page kòm yon agiman nan yon ti pwogram JavaScript ki pral fè tout travay la pou Power Query.

Ki sa li sanble nan pi JavaScript

Gen yon anpil nan leson patikilye detaye sou travay ak ekspresyon regilye nan JavaScript sou entènèt la (pa egzanp, youn, de).

Nan ti bout tan ak senplifye, kòd JavaScript la pral sanble sa a:

Ekspresyon regilye (RegExp) nan Power Query

Isit la:

  • var str = 'Peye bòdwo 123 ak 789 pou sosis'; - kreye yon varyab str epi bay li tèks sous ke nou pral analize.
  • var modèl = /d+/gi; – kreye yon ekspresyon regilye epi mete l nan yon varyab modèl.

    Ekspresyon an kòmanse ak yon koupe (/).

    Ekspresyon nan tèt li isit la, pou egzanp, se d+ kanpe pou nenpòt sekans chif.

    Atravè fraksyon apre ekspresyon an, gen lòt paramèt rechèch (modifikatè) - yo ka espesifye nan nenpòt lòd:

    • g – vle di rechèch global, sa vle di apre ou fin jwenn yon match, ou pa ta dwe sispann, men kontinye rechèch la jouk nan fen tèks la. Si modifye sa a pa mete, lè sa a script nou an ap retounen sèlman premye match la (123)
    • i - rechèch san yo pa konsidere ka nan lèt
    • m - rechèch milti-liy (itilize lè tèks sous la divize an plizyè liy)
  • var rezilta = str.match(modèl).join(';'); – fè yon rechèch nan tèks sous la (str) pa ekspresyon regilye yo bay la (modèl) epi mete rezilta yo nan yon varyab lakòz, konkatenasyon yo ak yon pwen-vir ak kòmandman an rantre nan
  • document.write(rezilta); – montre sa ki nan varyab rezilta a

Epitou sonje ke fisèl tèks (eksepte ekspresyon regilye) nan JavaScript yo fèmen nan apòt, pa quotes jan yo ye nan Power Query oswa VBA.

Nan pwodiksyon an, script sa a pral ba nou kòm yon rezilta tout nimewo yo jwenn nan tèks sous la:

123, 789

Kout JavaScript fini, mèsi tout. Espere ou jwenn lojik la 🙂

Li rete pou transfere konstriksyon sa a nan Power Query.

Chèche ak Ekstrè Fonksyon Tèks pa ekspresyon regilye nan Power Query

Nou fè bagay sa yo:

1. Louvri Excel epi kreye yon nouvo rekèt pouvwa vid nan tab la Done – Jwenn done / Kreye demann – Soti nan lòt sous – Vide demann (Done — Jwenn done / Nouvo rechèch — Soti nan lòt sous — Rekèt vid). Si ou gen yon ansyen vèsyon Excel 2010-2013 ak Power Query ou pa gen bati-an, men li te enstale kòm yon sipleman separe, Lè sa a, tout bagay sa yo pral sou tab la. Pouvwa rechèchEpi yo pa Done.

2. Nan fennèt vid editè rechèch la ki louvri, nan panèl dwat la, imedyatman antre non fonksyon fiti nou an (pa egzanp, fxRegExpExtract)

Ekspresyon regilye (RegExp) nan Power Query

3. Ann ale nan tab la View - Editè avanse (View — Editè avanse), nou efase tout M-kòd demann vid la epi kole kòd sipèfonksyon nou an la:

Ekspresyon regilye (RegExp) nan Power Query

Gade men ou:

Nan premye liy lan, nou di ke fonksyon nou an pral gen twa agiman tèks: txt - tèks orijinal yo analize, regex - modèl ekspresyon regilye, delim — karaktè delimiter pou montre rezilta yo.

Apre sa, nou rele fonksyon an Paj Web, fòme kòd JavaScript ki dekri pi wo a nan agiman li yo. Nou kole ak ranplase agiman varyab nou an nan kòd la.

Fragman:

[Done]{0}[Timoun]{0}[Timoun]{1}[Tèks]{0}

… li nesesè pou “tonbe” nan tablo a ak rezilta nou bezwen yo. Pwen an se ke fonksyon an Paj Web kòm yon rezilta, li pwodui plizyè tab enbrike ki repete estrikti a nan yon paj entènèt. San pyès sa a nan M-kòd, fonksyon nou an ta bay sa a:

Ekspresyon regilye (RegExp) nan Power Query

… epi nou ta dwe klike sou mo a plizyè fwa Tablo, successivement "tonbe nan" nan tab enbrike timoun nan kolòn Timoun:

Ekspresyon regilye (RegExp) nan Power Query

Olye de tout sitasyon sa a, nou imedyatman endike nan kòd la nan fonksyon nou an ki enbrike tab ak kolòn (Tèks) nou bezwen.

Isit la, an reyalite, se tout sekrè yo. Li rete pou peze bouton an Fini nan fenèt la editè avanse, kote nou mete kòd nou an, epi ou ka kontinye nan pi bon gou a - eseye fonksyon nou an nan travay.

Isit la yo se yon koup nan egzanp grenn.

Egzanp 1. Rekipere nimewo kont ak dat nan deskripsyon peman an

Nou gen yon deklarasyon labank ki gen yon deskripsyon (objektif) peman, kote ou bezwen rale nimewo ak dat fakti yo peye nan kolòn separe:

Ekspresyon regilye (RegExp) nan Power Query

Nou chaje tab la nan Power Query nan fason estanda a Done - Soti nan Tablo / Ranje (Done - Soti nan Tkapab/Ranj).

Lè sa a, nou ajoute yon kolòn kalkile ak fonksyon nou an atravè Ajoute Kolòn - Rele Fonksyon Custom (Ajoute Kolòn — Envoke Fonksyon Custom) epi antre agiman li yo:

Ekspresyon regilye (RegExp) nan Power Query

Kòm yon ekspresyon regilye (agiman regex) modèl nou itilize:

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

… tradui nan lang imen sa vle di: 

nimewo soti nan 3 a 5 chif (nimewo kont)

or

fragman fòm "2-bit nimewo - pwen - 2-bit nimewo - pwen - 4-bit nimewo", sa vle di dat fòm DD.MM.AAAA.

Kòm yon karaktè delimiter (agiman delim) antre yon pwen-vir.

Apre klike sou OK fonksyon majik nou an analize tout done inisyal yo dapre ekspresyon regilye nou an epi fòme yon kolòn pou nou ak nimewo yo jwenn ak dat fakti yo:

Ekspresyon regilye (RegExp) nan Power Query

Li rete pou separe li pa pwen-vir ak kòmandman an Kay — Divize Kolòn — Pa Delimiter (Lakay — Divize kolòn — Pa delimiter) epi nou jwenn sa nou te vle:

Ekspresyon regilye (RegExp) nan Power Query

Bote!

Egzanp 2: Ekstrè adrès imel nan tèks

Sipoze nou gen tablo sa a kòm premye done:

Ekspresyon regilye (RegExp) nan Power Query

… soti kote nou bezwen rale adrès imel yo jwenn la (pou klè, mwen make yo an wouj nan tèks la).

Kòm nan egzanp anvan an, nou chaje tab la nan Power Query nan fason estanda atravè Done - Soti nan Tablo / Ranje (Done - Soti nan Tkapab/Ranj).

Lè sa a, nou ajoute yon kolòn kalkile ak fonksyon nou an atravè Ajoute Kolòn - Rele Fonksyon Custom (Ajoute Kolòn — Envoke Fonksyon Custom) epi antre agiman li yo:

Ekspresyon regilye (RegExp) nan Power Query

Analyse adrès imel se yon travay ki pi difisil e gen yon pakèt ekspresyon regilye nan diferan degre kochma pou rezoud li. Mwen te itilize youn nan opsyon ki senp yo - pa ideyal, men byen travay nan pifò ka yo:

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

Kòm séparateur (delim) ou ka antre yon pwen ak yon espas.

Klike sou OK epi nou jwenn yon kolòn ki gen adrès imel ki soti nan tèks orijinal "labouyl la":

Ekspresyon regilye (RegExp) nan Power Query

Majik!

PS

Jan pwovèb la di: "Pa gen okenn bon bagay sa yo ki pa ta ka amelyore menm." Power Query se fre poukont li, epi lè konbine avèk ekspresyon regilye, li ban nou konplètman ireyèl pouvwa ak fleksibilite nan trete nenpòt done tèks. Mwen espere yon jou Microsoft pral ajoute sipò RegExp nan Power Query ak Power BI mizajou ak tout dans ki anwo yo ak yon tanbourin pral tounen yon bagay nan tan lontan an. Oke, pou kounye a, wi.

Mwen vle ajoute tou ke li se pratik yo jwe ak ekspresyon regilye sou sit la https://regexr.com/ - dwa nan editè a sou entènèt. Gen nan seksyon an Modèl Kominote Gen yon gwo kantite sezon regilye pare pou tout okazyon. Eksperyans - tout pouvwa ekspresyon regilye yo kounye a nan sèvis ou nan Power Query!

  • Ki sa ki ekspresyon regilye (RegExp) ak kouman yo sèvi ak yo nan Excel
  • Rechèch tèks flou nan Power Query
  • Asanble tab ki soti nan diferan dosye lè l sèvi avèk Power Query

Kite yon Reply