Espressioni Regular (RegExp) in Power Query

Sì avete almenu un pocu familiarizatu cù l'espressioni regulare, ùn avete micca bisognu di publicità. Se ùn site micca bè in u sughjettu, allora l'espressioni regulare (Espressioni Regular = RegExp = "regexps" = "regulars") hè una lingua induve, utilizendu caratteri speciali è regule, i substrings necessarii sò cercati in u testu, sò estratti. o rimpiazzatu cù un altru testu. Questu hè un strumentu assai putente è bellu, un ordine di grandezza superiore à tutti l'altri modi di travaglià cù u testu.

Aghju digià descrittu in detail è cun un saccu di esempi da a vita cumu pudete aghjunghje un supportu di espressione regulare à Excel utilizendu macros simplici - se ùn avete micca leghje stu articulu, vi cunsigliu assai di leghje prima di cuntinuà. Scoprerete assai cose novi, vi garantisco 🙂

Tuttavia, a quistione resta aperta - cumu aghjunghje l'abilità di utilizà espressioni regulari in Power Query? Power Query, sicuru, hè bonu per sè stessu è pò fà assai cù u testu (tagliate, incollate, pulizziari, etc.), ma s'ellu puderia attraversà cù u putere di l'espressioni rigulari, saria solu una bomba.

Sfortunatamente, ùn ci sò micca funzioni integrate per travaglià cù RegExps in Power Query, è l'aiutu ufficiale di Microsoft è u supportu tecnicu risponde à sta quistione in negativu. Tuttavia, ci hè un modu per aggirari sta limitazione 🙂

L'essenza di u metudu

L'idea principale hè simplice di disgrazia.

In a lista di e capacità integrate di Power Query, ci hè una funzione Web.Pagina. A descrizzione di sta funzione nantu à u situ ufficiale di l'aiutu di Microsoft hè estremamente concisa:

Espressioni Regular (RegExp) in Power Query

Traduttu, questu seria: "Ritorna u cuntenutu di u documentu HTML divisu in e so strutture cumpunenti, è ancu una rapprisintazioni di u documentu cumpletu è u so corpu dopu chì i tags sò stati eliminati". So-so descrizzione, francamente.

Di solitu sta funzione hè aduprata quandu importate dati da u web è hè automaticamente sustituitu, per esempiu, quandu selezziunate nantu à a tabulazione. Dati Command Da Internet (Dati - Da u web). Demu à a funzione una pagina web cum'è argumentu, è torna u so cuntenutu à noi in forma di tavule, avè sbulicatu prima tutte e tag.

Ciò chì l'aiutu ùn dice micca hè chì in più di a lingua di marcatura HTML funziunava Web.Pagina supporta scripts JavaScript, chì hè oghji omnipresente nantu à i siti web in Internet. E JavaScript, à u turnu, hè sempre statu capace di travaglià cù espressioni regulari è hà funzioni integrate per RegExps! Allora per implementà espressioni regulari in Power Query, avemu bisognu di alimentà e funzioni Web.Page cum'è un argumentu à un picculu prugramma JavaScript chì farà tuttu u travagliu per Power Query.

Ciò chì pare in JavaScript puru

Ci sò assai tutoriali detallati nantu à travaglià cù espressioni regulari in JavaScript in Internet (per esempiu, unu, dui).

In breve è simplificatu, u codice JavaScript serà cusì cusì:

Espressioni Regular (RegExp) in Power Query

Eccu:

  • var str = 'Paga i fatture 123 è 789 per a salsiccia'; - creà una variabile st è assignà u testu fonte chì avemu da analizà.
  • var pattern = /d+/gi; - crea una espressione regulare è mette in una variàbile mudellu.

    L'espressione principia cù una barra (/).

    L'espressione stessu quì, per esempiu, hè d+ significa ogni sequenza di cifre.

    Per mezu di a frazzioni dopu l'espressione, ci sò paràmetri di ricerca supplementari (modificatori) - ponu esse specificati in ogni ordine:

    • g - significa ricerca glubale, vale à dì dopu à truvà una partita, ùn devi micca piantà, ma cuntinuà a ricerca finu à a fine di u testu. Se stu modificatore ùn hè micca stabilitu, allora u nostru script restituverà solu a prima partita (123)
    • i - ricerca senza riguardu à casu di lettere
    • m - ricerca multilinea (aduprata quandu u testu fonte hè divisu in parechje linee)
  • var result = str.match(pattern).join(';'); - fà una ricerca in u testu fonte (st) per l'espressione regulare data (mudellu) è mette i risultati in una variabile risurtatu, cuncatenduli cù un puntu e virgola usendu u cumandamentu Unete
  • document.write(result); - mostra u cuntenutu di a variabile di risultatu

Innota ancu chì e stringhe di testu (escludendu l'espressioni regulari) in JavaScript sò chjusi in apostrofi, micca virgulette cum'è in Power Query o VBA.

À l'output, stu script ci darà com'è u risultatu tutti i numeri truvati in u testu fonte:

123, 789

U cursu breve di JavaScript hè finitu, grazie à tutti. Spergu chì avete a logica 🙂

Resta da trasfiriri sta custruzzione à Power Query.

Ricerca è Estrae Funzione di Testu per Espressione Regular in Power Query

Facemu i seguenti:

1. Apertura Excel è crea una nova Power Query viota in a tabulazione Dati - Ottene dati / Crea dumanda - Da altre fonti - Richiesta viota (Dati - Ottene dati / Nova dumanda - Da altre fonti - Query in biancu). Se tenete una vechja versione di Excel 2010-2013 è Power Query ùn avete micca integrata, ma hè stata installata cum'è un add-in separatu, allora tuttu questu serà nantu à a tabulazione. dumanda di putenzaÈ micca Dati.

2. In a finestra viota di l'editore di quistione chì apre, in u pannellu drittu, inserite immediatamente u nome di a nostra funzione futura (per esempiu, fxRegExpExtract)

Espressioni Regular (RegExp) in Power Query

3. Andemu à a tabulazione View - Editor avanzatu (Vede - Editor avanzatu), sguassemu tuttu u codice M di a dumanda viota è incollà u codice di a nostra superfunzione quì:

Espressioni Regular (RegExp) in Power Query

Fighjate e vostre mani:

In a prima linea, dicemu chì a nostra funzione averà trè argumenti di testu: txt - u testu originale chì hè analizatu, regex - mudellu di spressione regulare, delim - Carattere delimitatore per vede i risultati.

Dopu avemu chjamatu a funzione Web.Pagina, furmendu u codice JavaScript descrittu sopra in u so argumentu. Incolla è sustituisce i nostri argumenti variabili in u codice.

Frammentu:

[Dati]{0}[I zitelli]{0}[I zitelli]{1}[Testu]{0}

... hè necessariu di "cascà" in a tavula cù i risultati chì avemu bisognu. U puntu hè chì a funzione Web.Pagina com'è u risultatu, pruduce parechje tavule nidificate chì repite a struttura di una pagina web. Senza stu pezzu di codice M, a nostra funzione avaristi questu:

Espressioni Regular (RegExp) in Power Query

... è duvemu cliccà a parolla parechje volte Table, successivamente "caduta" in tavule nidificate di i zitelli in colonne Ropa:

Espressioni Regular (RegExp) in Power Query

Invece di tutte sta citazione, indichemu immediatamente in u codice di a nostra funzione chì nidificate a tavola è a colonna (Testu) avemu bisognu.

Eccu, in fatti, sò tutti i sicreti. Resta à appughjà u buttone Finisci in a finestra editore avanzatu, induve avemu inseritu u nostru codice, è pudete passà à u più diliziosu - pruvate a nostra funzione à u travagliu.

Eccu un coppiu di esempi di sementi.

Esempiu 1. Ritruvà u numeru di contu è a data da a descrizzione di pagamentu

Avemu una dichjarazione bancaria cù una descrizzione (scopu) di i pagamenti, induve avete bisognu di caccià i numeri è e date di e fatture pagate in colonne separate:

Espressioni Regular (RegExp) in Power Query

Carighemu a tavola in Power Query in u modu standard Dati - Da Table / Range (Dati - Da Tcapace/Ranghjulu).

Allora aghjunghje una colonna calculata cù a nostra funzione via Aggiungi Colonna - Chjama Funzione Personalizzata (Aggiungi Colonna - Invoca Funzione Personalizzata) è inserisci i so argumenti:

Espressioni Regular (RegExp) in Power Query

Cum'è una espressione regulare (argumentu regex) mudellu chì usemu:

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

... traduttu in lingua umana significatu: 

numeri da 3 à 5 cifre (numeri di contu)

or

frammenti di a forma "numeru 2-bit - puntu - numeru 2-bit - puntu - numeru 4-bit", vale à dì, date di a forma GG.MM.AAAA.

Cum'è un caratteru delimitatore (argumentu delim) entre un puntu e virgola.

Dopu avè cliccatu OK a nostra funzione magica analizeghja tutte e dati iniziali secondu a nostra espressione regulare è forma una colonna per noi cù i numeri truvati è e date di e fatture:

Espressioni Regular (RegExp) in Power Query

Resta à separà da u puntu e virgule usendu u cumandimu Home — Split Colonna — By Delimiter (Casa — Colonna divisa — Per delimitatore) è avemu ciò chì vulemu:

Espressioni Regular (RegExp) in Power Query

Bellezza!

Esempiu 2: Estrae l'indirizzi email da u testu

Suppone chì avemu a seguente tabella cum'è dati iniziali:

Espressioni Regular (RegExp) in Power Query

... da induve avemu bisognu di caccià l'indirizzi email truvati quì (per a chiarezza, l'aghju evidenziatu in rossu in u testu).

Cum'è in l'esempiu precedente, carchemu a tavola in Power Query in u modu standard via Dati - Da Table / Range (Dati - Da Tcapace/Ranghjulu).

Allora aghjunghje una colonna calculata cù a nostra funzione via Aggiungi Colonna - Chjama Funzione Personalizzata (Aggiungi Colonna - Invoca Funzione Personalizzata) è inserisci i so argumenti:

Espressioni Regular (RegExp) in Power Query

L'analisi di l'indirizzi email hè un compitu più difficiule è ci sò una mansa di espressioni regulari di varii gradi di incubo per risolve. Aghju utilizatu una di l'opzioni simplici - micca ideali, ma abbastanza travagliatu in a maiò parte di i casi:

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

Cum'è separatore (delim) pudete inserisce un puntu è un spaziu.

Cliccate nant'à OK è avemu una colonna cù indirizzi e-mail estratti da u testu originale "porridge":

Espressioni Regular (RegExp) in Power Query

Magia!

PS

Cum'è u proverbio dice: "Ùn ci hè micca una cosa cusì bona chì ùn puderia micca esse ancu megliu". Power Query hè frescu per sè stessu, è quandu hè cumminatu cù espressioni rigulari, ci dà una putenza è una flessibilità completamente irrealistiche in u processu di qualsiasi dati di testu. Spergu chì Microsoft un ghjornu aghjunghje u supportu RegExp in l'aghjurnamenti di Power Query è Power BI è tutti i balli sopra cù un tamburinu diventeranu una cosa di u passatu. Ebbè, per avà, sì.

Vogliu ancu aghjunghje chì hè cunvenutu per ghjucà cù l'espressioni regulare in u situ https://regexr.com/ - ghjustu in l'editore in linea. Ci hè in a sezione Modelli di a cumunità Ci hè un gran numaru di stagioni regulari pronti per tutte l'occasioni. Esperimentu - tuttu u putere di l'espressioni regulari hè avà à u vostru serviziu in Power Query!

  • Chì sò l'espressioni regulare (RegExp) è cumu si usanu in Excel
  • Ricerca di testu fuzzy in Power Query
  • Assemblage tavule da diversi schedari cù Power Query

Lascia un Audiolibro