Primeri Excel RegEx: uporaba regularnih izrazov v formulah

  • Deliti To
Michael Brown

Nikoli ne razumete, zakaj regularni izrazi niso podprti v Excelovih formulah? Zdaj so :) Z našimi funkcijami po meri lahko preprosto poiščete, zamenjate, izvlečete in odstranite nize, ki ustrezajo določenemu vzorcu.

Na prvi pogled ima Excel vse, kar lahko potrebujete za upravljanje besedilnih nizov. Hmm... kaj pa regularni izrazi? Ups, v Excelu ni vgrajenih funkcij Regex. Toda nihče ne pravi, da ne moremo ustvariti svojih :)

    Kaj je regularni izraz?

    Regularni izraz (znan tudi kot regex ali regexp ) je posebej kodirano zaporedje znakov, ki opredeljuje iskalni vzorec. S tem vzorcem lahko v nizu poiščete ustrezno kombinacijo znakov ali potrdite vnos podatkov. Če poznate zapis nadomestnih znakov, si lahko regexe predstavljate kot napredno različico nadomestnih znakov.

    Regularni izrazi imajo lastno sintakso, ki jo sestavljajo posebni znaki, operatorji in konstrukcije. Na primer, [0-5] ustreza katerikoli posamezni številki od 0 do 5.

    Regularni izrazi se uporabljajo v številnih programskih jezikih, vključno z JavaScriptom in VBA. Slednji ima poseben objekt RegExp, ki ga bomo uporabili za ustvarjanje funkcij po meri.

    Ali Excel podpira regex?

    Žal v Excelu ni vgrajenih funkcij Regex. Če želite v formulah uporabljati regularne izraze, boste morali ustvariti lastno uporabniško funkcijo (VBA ali .NET) ali namestiti orodja tretjih oseb, ki podpirajo regexe.

    Excel Regex goljufija list

    Ne glede na to, ali je vzorec regex zelo preprost ali izjemno zapleten, je zgrajen z uporabo skupne sintakse. Namen tega priročnika ni naučiti vas regularnih izrazov. Za to je na spletu na voljo veliko virov, od brezplačnih priročnikov za začetnike do vrhunskih tečajev za napredne uporabnike.

    V nadaljevanju vam ponujamo kratek pregled glavnih vzorcev RegEx, ki vam bo pomagal razumeti osnove. Lahko vam služi tudi kot preglednica pri preučevanju nadaljnjih primerov.

    Če ste vešči regularnih izrazov, lahko takoj preidete k funkcijam RegExp.

    Znaki

    To so najpogosteje uporabljeni vzorci za ujemanje določenih znakov.

    Vzorec Opis Primer Tekme
    . Zaščitni znak: ustreza kateremu koli posameznemu znaku, razen preloma vrstice .ot pika , vroče , lonec , @ot
    \d Znak za številko: katerakoli enomestna številka od 0 do 9 \d Na spletnem mestu a1b , tekme 1
    \D katerikoli znak, ki NI številka \D Na spletnem mestu a1b , tekme a in . b
    \s Znak belega prostora: presledek, tabulator, nova vrstica in povratek. .\s. Na spletnem mestu 3 cente , tekme 3 c
    \S katerikoli znak, ki ni bel presledek \S+ Na spletnem mestu 30 centov , tekme 30 in . centov
    \w Besedni znak: katera koli črka ASCII, številka ali podčrtaj. \w+ Na spletnem mestu 5_cats*** , tekme 5_cats
    \W katerikoli znak, ki NI alfanumerični znak ali podčrtanka \W+ Na spletnem mestu 5_cats*** , tekme ***
    \t Zavihek
    \n Nova linija \n\d+ V spodnjem dvovrstičnem nizu se ujema z 10

    5 mačk

    10 psov

    \ pobegne poseben pomen znaka, tako da ga lahko poiščete. \.

    \w+\.

    pobegne piko, da lahko v nizu poiščete dobesedni znak "."

    Gospod. , gospa. , Prof.

    Razredi znakov

    S temi vzorci lahko ujemate elemente različnih naborov znakov.

    Vzorec Opis Primer Tekme
    [znaki] ustreza kateremu koli posameznemu znaku v oklepaju d[oi]g pes in . dig
    [^znaki] ustreza kateremu koli posameznemu znaku, ki NI v oklepaju d[^oi]g Tekme dag, dug , d1g

    Ne ujema se pes in . dig

    [od-do] ujema katerikoli znak v območju med oklepaji [0-9]

    [a-z]

    [A-Z]

    Katera koli enomestna številka od 0 do 9

    katerakoli ena mala črka

    Katera koli velika tiskana črka

    Kvantifikatorji

    Kvantifikatorji so posebni izrazi, ki določajo število znakov za ujemanje. Kvantifikator vedno velja za znak pred njim.

    Vzorec Opis Primer Tekme
    * Nič ali več pojavov 1a* 1, 1a , 1aa, 1aaa , itd.
    + Ena ali več pojavitev po+ Na spletnem mestu lonec , tekme po

    Na spletnem mestu slaba , tekme kakanje

    ? Nič ali ena pojavitev roa?d cesta, palica
    *? Nič ali več pojavov, vendar čim manj. 1a*? Na spletnem mestu 1a , 1aa in . 1aaa , tekme 1a
    +? Ena ali več pojavitev, vendar čim manj. po+? Na spletnem mestu lonec in . slaba , tekme po
    ?? Nič ali en pojav, vendar čim manj. roa?? Na spletnem mestu cesta in . palica , tekme ro
    {n} n-krat se ujema s prejšnjim vzorcem \d{3} Točno 3 številke
    {n,} ujema prejšnji vzorec n-krat ali večkrat \d{3,} 3 ali več številk
    {n,m} ujema prejšnji vzorec med n in m-krat \d{3,5} Od 3 do 5 številk

    Združevanje v skupine

    Konstrukcije za združevanje se uporabljajo za zajemanje podreza iz izvornega niza, tako da lahko z njim izvedete določeno operacijo.

    Sintaksa Opis Primer Tekme
    (vzorec) skupina za zajemanje: zajame ustrezni podreženj in mu dodeli zaporedno številko. (\d+) Na spletnem mestu 5 mačk in 10 psov , zajema 5 (skupina 1) in 10 (skupina 2)
    (?:vzorec) Skupina, ki ne zajame: ujema skupino, vendar je ne zajame. (\d+)(?: psi) Na spletnem mestu 5 mačk in 10 psov , zajema 10
    \1 Vsebina skupine 1 (\d+)\+(\d+)=\2\+\1 Ujema 5+10=10+5 in zajame 5 in . 10 , ki so v ujetniških skupinah
    \2 Vsebina skupine 2

    Sidra

    Sidro določa položaj v vhodnem nizu, kjer naj se išče ujemanje.

    Sidro Opis Primer Tekme
    ^ Začetek niza

    Opomba: [^v oklepaju] pomeni "ne".

    ^\d+ poljubno število številk na začetku niza.

    Na spletnem mestu 5 mačk in 10 psov , tekme 5

    $ Konec niza \d+$ poljubno število številk na koncu niza.

    Na spletnem mestu 10 plus 5 je 15 , tekme 15

    \b Besedna meja \bjoy\b Tekme joy kot samostojna beseda, vendar ne v prijetno .
    \B NE besedna meja \Bjoy\B Tekme joy na spletnem mestu prijetno , vendar ne kot samostojna beseda.

    Konstrukcija alternacije (OR)

    Operand alternation omogoča logiko OR, zato lahko ujemate ta ali oni element.

    Gradnja Opis Primer Tekme
    ustreza kateremu koli posameznemu elementu, ločenemu z navpično črto (s Na spletnem mestu prodaja školjke, se ujema z prodaja in . školjke

    Obhodi

    Konstrukcije Lookaround so koristne, kadar želite ujemati nekaj, čemur sledi ali ne sledi ali ne sledi pred nečim drugim. Tem izrazom včasih pravimo "trditve z ničelno širino" ali "ujemanje z ničelno širino", ker ujemajo položaj in ne dejanskih znakov.

    Opomba: V okusu VBA RegEx videzi niso podprti.

    Vzorec Opis Primer Tekme
    (?=) Pozitiven pogled naprej X(?=Y) ustreza izrazu X, če mu sledi izraz Y (tj. če je izraz Y pred izrazom X).
    (?!) Negativno predvidevanje X(?!Y) ustreza izrazu X, če mu NE sledi izraz Y
    (?<=) Pozitiven pogled nazaj (?<=Y)X ustreza izrazu X, če je pred njim Y (tj. če je za izrazom X izraz Y).
    (? )</td Negativni pogled v ozadje (? Y)X</td ustreza izrazu X, če pred njim NI izraza Y

    Zdaj, ko poznate osnove, se lotimo najbolj zanimivega dela - uporabe regeksov v resničnih podatkih za razčlenjevanje nizov in iskanje potrebnih informacij. Če potrebujete več podrobnosti o sintaksi, vam bo v pomoč Microsoftov vodnik o jeziku regularnih izrazov.

    Funkcije RegEx po meri za Excel

    Kot smo že omenili, Microsoft Excel nima vgrajenih funkcij RegEx. Za omogočanje regularnih izrazov smo ustvarili tri lastne funkcije VBA (t. i. uporabniško definirane funkcije). Kode lahko kopirate s spodaj povezanih strani ali iz našega vzorčnega delovnega zvezka in jih nato vstavite v svoje datoteke Excel.

    Kako delujejo funkcije VBA RegExp

    V tem razdelku je razložena notranja mehanika in je lahko zanimiv za tiste, ki želijo natančno vedeti, kaj se dogaja v ozadju.

    Če želite začeti uporabljati regularne izraze v programu VBA, morate bodisi aktivirati knjižnico referenčnih objektov RegEx bodisi uporabiti funkcijo CreateObject. Da bi vam prihranili težave z nastavljanjem reference v urejevalniku VBA, smo izbrali slednji pristop.

    Objekt RegExp ima 4 lastnosti:

    • Vzorec - je vzorec za ujemanje v vhodnem nizu.
    • Globalno - določa, ali naj se v vhodnem nizu poiščejo vsi zadetki ali samo prvi. V naših funkcijah je nastavljena na True, da dobimo vse tekme .
    • MultiLine - določa, ali naj se vzorec ujema z vsemi prelomi vrstic v večvrstičnih nizih ali samo v prvi vrstici. V naših kodah je nastavljen na True, da se išče v vsaki vrstici .
    • IgnoreCase - določa, ali je regularni izraz občutljiv na velikost črk (privzeto) ali neobčutljiv na velikost črk (nastavljeno na True). V našem primeru je to odvisno od tega, kako konfigurirate izbirni match_case Privzeto so vse funkcije , ki upošteva velike in male črke. .

    Omejitve VBA RegExp

    Excel VBA izvaja osnovne vzorce regex, vendar nima številnih naprednih funkcij, ki so na voljo v programih .NET, Perl, Java in drugih pogonih regex. VBA RegExp na primer ne podpira vrstičnih modifikatorjev, kot so (?i) za ujemanje brez upoštevanja velikih in malih črk ali (?m) za večvrstični način, lookbehinds, razredov POSIX in še nekaterih drugih.

    Funkcija Excel Regex Match

    Spletna stran RegExpMatch funkcija v vhodnem nizu poišče besedilo, ki ustreza regularnemu izrazu, in vrne TRUE, če najde ujemanje, in FALSE v nasprotnem primeru.

    RegExpMatch(besedilo, vzorec, [match_case])

    Kje:

    • Besedilo (obvezno) - eden ali več nizov za iskanje.
    • Vzorec (obvezno) - regularni izraz za ujemanje.
    • Match_case (neobvezno) - vrsta ujemanja. TRUE ali izpuščeno - občutljivo na velikost črk; FALSE - ne občutljivo na velikost črk

    Koda funkcije je tukaj.

    Primer: uporaba regularnih izrazov za ujemanje nizov

    Predpostavimo, da želite v spodnjem naboru podatkov prepoznati vnose, ki vsebujejo oznake SKU.

    Glede na to, da se vsak SKU začne z dvema velikima črkama, ki jima sledi pomišljaj in štiri številke, jih lahko ujemate z naslednjim izrazom.

    Vzorec : \b[A-Z]{2}-\d{4}\b

    Pri čemer [A-Z]{2} pomeni kateri koli 2 veliki črki od A do Ž, \d{4} pa pomeni katere koli 4 števke od 0 do 9. Meja besed \b označuje, da je SKU ločena beseda in ne del večjega niza.

    Ko je vzorec vzpostavljen, začnite tipkati formulo kot običajno, in ime funkcije se bo pojavilo na seznamu, ki ga predlaga Excelova funkcija AutoComplete:

    Ob predpostavki, da je izvirni niz v A5, je formula naslednja:

    =RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")

    Zaradi priročnosti lahko regularni izraz vnesete v ločeno celico in uporabite absolutni sklic ($A$2) za vzorec To zagotavlja, da bo naslov celice ostal nespremenjen, ko boste formulo kopirali v druge celice:

    =RegExpMatch(A5, $A$2)

    Če želite namesto oznak TRUE in FALSE prikazati lastne besedilne oznake, vstavite RegExpMatch v funkcijo IF in določite želena besedila v value_if_true in . value_if_false argumenti:

    =IF(RegExpMatch(A5, $A$2), "Da", "Ne")

    Za več primerov formul glejte:

    • Kako ujemanje nizov z uporabo regularnih izrazov
    • Potrjevanje podatkov v programu Excel z regexi

    Funkcija Excel Regex Izvleček

    Spletna stran RegExpExtract poišče podrejene nize, ki ustrezajo regularnemu izrazu, in izvleče vsa ujemanja ali določeno ujemanje.

    RegExpExtract(besedilo, vzorec, [številka primera], [match_case])

    Kje:

    • Besedilo (obvezno) - besedilni niz za iskanje.
    • Vzorec (obvezno) - regularni izraz za ujemanje.
    • Instance_num (neobvezno) - zaporedna številka, ki označuje, kateri primerek je treba izpisati. Če je izpuščen, se vrnejo vsi najdeni primerki (privzeto).
    • Match_case (neobvezno) - določa, ali se velikost črk besedila ujema (TRUE ali izpuščeno) ali zanemarja (FALSE).

    Kodo funkcije lahko dobite tukaj.

    Primer: kako izvleči nize z uporabo regularnih izrazov

    Če naš primer še malo razširimo, izločimo številke računov. Za to bomo uporabili zelo preprost regex, ki ustreza katerikoli sedemmestni številki:

    Vzorec : \b\d{7}\b

    Vstavite vzorec v A2 in s to kompaktno in elegantno formulo boste opravili svoje delo:

    =RegExpExtract(A5, $A$2)

    Če je vzorec ustrezen, formula izlušči številko računa, če ni ustreznosti, se ne vrne nič.

    Za več primerov glejte: Kako izluščiti nize v Excelu z uporabo regexa.

    Funkcija Excel Regex Zamenjaj

    Spletna stran RegExpReplace nadomesti vrednosti, ki ustrezajo regexu, z besedilom, ki ga določite.

    RegExpReplace(besedilo, vzorec, zamenjava, [številka primera], [primerjava_primera])

    Kje:

    • Besedilo (obvezno) - besedilni niz za iskanje.
    • Vzorec (obvezno) - regularni izraz za ujemanje.
    • Zamenjava (obvezno) - besedilo, s katerim se nadomestijo ustrezni podrejeni nizi.
    • Instance_num (neobvezno) - primerek, ki se nadomesti. Privzeto je "all matches".
    • Match_case (neobvezno) - določa, ali se velikost črk besedila ujema (TRUE ali izpuščeno) ali zanemarja (FALSE).

    Koda funkcije je na voljo tukaj.

    Primer: kako zamenjati ali odstraniti nize z uporabo regeksov

    Nekateri naši zapisi vsebujejo številke kreditnih kartic. Te informacije so zaupne, zato jih boste morda želeli nadomestiti z drugimi ali v celoti izbrisati. Obe nalogi lahko opravite s pomočjo RegExpReplace Kako? V drugem primeru bomo nadomestili prazen niz.

    V naši vzorčni tabeli imajo vse številke kartic 16 številk, ki so zapisane v 4 skupinah, ločenih s presledki. Da bi jih našli, ponovimo vzorec z uporabo tega regularnega izraza:

    Vzorec : \b\d{4} \d{4} \d{4} \d{4} \d{4}\b

    Za zamenjavo se uporabi naslednji niz:

    Zamenjava : XXXX XXXX XXXX XXXX XXXX

    Tukaj je celotna formula za zamenjajte številke kreditnih kartic z neobčutljivimi podatki:

    =RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX XXXX XXXX")

    Če sta regex in nadomestno besedilo v ločenih celicah (A2 in B2), formula deluje enako dobro:

    V programu Excel je "odstranjevanje" poseben primer "nadomeščanja". odstranite številke kreditnih kartic, uporabite prazen niz ("") za zamenjava argument:

    =RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "")

    Nasvet. Če želite odstraniti prazne vrstice v rezultatih, lahko uporabite drugo funkcijo RegExpReplace, kot je prikazano v tem primeru: Kako odstraniti prazne vrstice z uporabo regexa.

    Za več informacij glejte:

    • Kako zamenjati nize v Excelu z uporabo regexa
    • Kako odstraniti nize z uporabo regexa
    • Kako odstraniti bele prostore z uporabo regeksov

    Orodja Regex za ujemanje, izvleček, zamenjavo in odstranjevanje podrejencev

    Uporabniki našega paketa Ultimate Suite lahko izkoristijo vso moč regularnih izrazov, ne da bi v svoje delovne zvezke vstavili eno samo vrstico kode. Vso potrebno kodo napišejo naši razvijalci in jo med namestitvijo gladko vključijo v Excel.

    V nasprotju z zgoraj obravnavanimi funkcijami VBA temeljijo funkcije paketa Ultimate Suite na tehnologiji .NET, kar ima dve glavni prednosti:

    1. V običajnih delovnih zvezkih .xlsx lahko uporabljate regularne izraze, ne da bi dodali kodo VBA in jih shranili kot datoteke z omogočenimi makri.
    2. Pogon .NET Regex podpira polno funkcionalne klasične regularne izraze, s katerimi lahko sestavite zahtevnejše vzorce.

    Kako uporabljati regex v Excelu

    Z nameščenim paketom Ultimate Suite je uporaba regularnih izrazov v Excelu tako preprosta kot ta dva koraka:

    1. Na Podatke o abilitah v zavihku Besedilo skupino, kliknite Orodja Regex .

    2. Na Orodja Regex v podoknu naredite naslednje:
      • Izberite izvorne podatke.
      • Vnesite vzorec regex.
      • Izberite želeno možnost: Tekma , Izvleček , Odstranite ali Zamenjava .
      • Če želite rezultat dobiti kot formulo in ne kot vrednost, izberite Vstavite kot formulo potrditveno polje.
      • Pritisnite gumb za ukrepanje.

      Če želimo na primer iz celic A2:A6 odstraniti številke kreditnih kartic, konfiguriramo te nastavitve:

    V trenutku bo funkcija AblebitsRegex vstavljena v nov stolpec desno od prvotnih podatkov. V našem primeru je formula:

    =AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4}\b")

    Ko je formula pripravljena, jo lahko urejate, kopirate ali premikate kot katero koli drugo izvirno formulo.

    Kako vstaviti formulo Regex neposredno v celico

    Funkcije AblebitsRegex lahko vstavite tudi neposredno v celico, ne da bi uporabili vmesnik dodatka:

    1. Kliknite na fx v vrstici s formulo ali Funkcija vstavljanja na Formule zavihek.
    2. V Funkcija vstavljanja v pogovornem oknu izberite AblebitsUDFs izberite želeno funkcijo in kliknite V redu.

    3. Določite argumente funkcije kot običajno in kliknite OK. Končano!

    Za več informacij glejte Orodja regex za Excel.

    To je način uporabe regularnih izrazov za ujemanje, izločanje, nadomeščanje in odstranjevanje besedila v celicah programa Excel. Zahvaljujem se vam za branje in se veselim, da se naslednji teden vidimo na našem blogu!

    Razpoložljivi prenosi

    Excel Regex - primeri formul (.xlsm datoteka)

    Ultimate Suite - preizkusna različica (.exe datoteka)

    Michael Brown je predan tehnološki navdušenec s strastjo do poenostavljanja kompleksnih procesov z uporabo programskih orodij. Z več kot desetletnimi izkušnjami v tehnološki industriji je svoje veščine izpopolnil v Microsoft Excelu in Outlooku ter Google Preglednicah in Dokumentih. Michaelov blog je namenjen deljenju svojega znanja in strokovnega znanja z drugimi ter ponuja preproste nasvete in vadnice za izboljšanje produktivnosti in učinkovitosti. Ne glede na to, ali ste izkušen strokovnjak ali začetnik, Michaelov blog ponuja dragocene vpoglede in praktične nasvete, kako kar najbolje izkoristiti ta osnovna programska orodja.