Exceli RegExi näited: regulaaravaldiste kasutamine valemites

  • Jaga Seda
Michael Brown

Ei saa kunagi aru, miks regulaarseid väljendeid ei toetata Exceli valemites? Nüüd toetatakse :) Meie kohandatud funktsioonide abil saate hõlpsasti leida, asendada, eraldada ja eemaldada konkreetsele mustrile vastavaid stringid.

Esmapilgul on Excelis olemas kõik, mida te võiksite kunagi vajada teksti stringidega manipuleerimiseks. Hmm... aga kuidas on regulaaravaldised? Ups, Excelis ei ole sisseehitatud Regex-funktsioone. Aga keegi ei ütle, et me ei saa ise oma regulaaravaldisi luua :)

    Mis on regulaaravaldis?

    Regulaaravaldis (ka regex või regexp ) on spetsiaalselt kodeeritud tähemärkide jada, mis määratleb otsingumustri. Selle mustri abil saate leida sobiva tähemärkide kombinatsiooni stringist või valideerida andmesisestust. Kui olete tuttav metsiku märkega, võite mõelda regexidest kui metsikute märkide täiustatud versioonist.

    Regulaaravaldistel on oma süntaks, mis koosneb erimärkidest, operaatoritest ja konstruktsioonidest. Näiteks [0-5] vastab mis tahes üksikule numbrile vahemikus 0 kuni 5.

    Regulaarseid väljendeid kasutatakse paljudes programmeerimiskeeltes, sealhulgas JavaScriptis ja VBAs. Viimases on spetsiaalne RegExp objekt, mida me kasutame oma kohandatud funktsioonide loomiseks.

    Kas Excel toetab regexi?

    Kahjuks ei ole Excelis sisseehitatud Regex-funktsioone. Selleks, et saaksite oma valemites kasutada regulaarseid väljendeid, peate looma oma kasutajapoolse funktsiooni (VBA- või .NET-põhine) või paigaldama regexe toetavaid kolmanda osapoole vahendeid.

    Exceli Regex spikker

    Olenemata sellest, kas regexi muster on väga lihtne või äärmiselt keerukas, ehitatakse see üles ühise süntaksi abil. Selle õpetuse eesmärk ei ole õpetada teid regulaaravaldistele. Selleks on internetis palju ressursse, alates tasuta õpetustest algajatele kuni lisakursusteni edasijõudnutele.

    Järgnevalt anname kiire viite peamistele RegExi mustritele, mis aitab teil põhitõdedest aru saada. See võib toimida ka teie spikkerina edasiste näidete õppimisel.

    Kui teil on regulaaravaldiste kasutamine mugav, võite otse RegExp-funktsioonide juurde hüpata.

    Tegelased

    Need on kõige sagedamini kasutatavad mustrid, mis sobivad teatud tähtedega.

    Muster Kirjeldus Näide Sobib
    . Metsik märk: sobib mis tahes üksiku märgiga, välja arvatud reavahetusega. .ot dot , kuum , pot , @ot
    \d Numbrimärk: ükskõik milline üksik number vahemikus 0 kuni 9 \d Veebilehel a1b , vasteid 1
    \D Iga märk, mis EI ole number \D Veebilehel a1b , vasteid a ja b
    \s Tühimärk: tühik, tabulaator, uus rida ja tagasipöördumine .\s. Veebilehel 3 senti , vasteid 3 c
    \S Mis tahes muu kui tühikuala märk \S+ Veebilehel 30 senti , vasteid 30 ja senti
    \w Sõnamärk: mis tahes ASCII-täht, number või alatähis. \w+ Veebilehel 5_cats*** , vasteid 5_cats
    \W Iga märk, mis EI ole tähtnumbriline märk või alatähis. \W+ Veebilehel 5_cats*** , vasteid ***
    \t Tab
    \n Uus rida \n\d+ Alljärgnevas kaherealises stringis vastab 10

    5 kassi

    10 koera

    \ Põgeneb tähemärgi eriline tähendus, nii et seda saab otsida \.

    \w+\.

    Põgeneb punktist, et leida sõna-sõnaline "." märk stringis.

    Hr. , Mrs. , Prof.

    Tegelaste klassid

    Nende mustrite abil saate sobitada erinevate tähemärkide elemente.

    Muster Kirjeldus Näide Sobib
    [märgid] Sobib mis tahes üksiku tähemärgi sulgudes d[oi]g koer ja dig
    [^märkide] Sobib mis tahes üksiku tähemärgi suhtes, mis EI ole sulgudes. d[^oi]g Sobib Dag, kaevatud , d1g

    Ei vasta koer ja dig

    [from-to] Sobib mis tahes tähemärk sulgude vahelises vahemikus. [0-9]

    [a-z]

    [A-Z]

    Ükskõik milline üksik number vahemikus 0 kuni 9

    Ükskõik milline väike täht

    Ükskõik milline suurtäht

    Kvantifikaatorid

    Kvantifikaatorid on spetsiaalsed väljendid, mis määravad sobivate märkide arvu. Kvantifikaator kehtib alati sellele eelnevale märgile.

    Muster Kirjeldus Näide Sobib
    * Null või rohkem esinemissagedust 1a* 1, 1a , 1aa, 1aaa jne.
    + Üks või mitu juhtumit po+ Veebilehel pot , vasteid po

    Veebilehel vaene , vasteid kaka

    ? Null või üks esinemine roa?d tee, varras
    *? Null või rohkem esinemissagedust, kuid võimalikult vähe. 1a*? Veebilehel 1a , 1aa ja 1aaa , vasteid 1a
    +? Üks või mitu juhtumit, kuid võimalikult vähe. po+? Veebilehel pot ja vaene , vasteid po
    ?? Null või üks esinemine, kuid võimalikult vähe. roa?? Veebilehel tee ja varras , vasteid ro
    {n} Vastab eelnevale mustrile n korda \d{3} Täpselt 3 numbrit
    {n,} Vastab eelnevale mustrile n või rohkem korda \d{3,} 3 või rohkem numbrit
    {n,m} Vastab eelnevale mustrile vahemikus n kuni m korda. \d{3,5} 3 kuni 5 numbrit

    Grupeerimine

    Grupeerimiskonstruktsioone kasutatakse selleks, et haarata lähtekohast stringist alamstring, et saaksite sellega teha mingi operatsiooni.

    Süntaks Kirjeldus Näide Sobib
    (muster) Rühma hõivamine: hõivab sobiva alamstringi ja määrab sellele järjekorranumbri. (\d+) Veebilehel 5 kassi ja 10 koera , jäädvustab 5 (1. rühm) ja 10 (rühm 2)
    (?:muster) Mitte-ülesvõttev rühm: vastab rühmale, kuid ei võta seda kinni. (\d+)(?: koerad) Veebilehel 5 kassi ja 10 koera , jäädvustab 10
    \1 Rühma 1 sisu (\d+)\+(\d+)=\2\+\1 Vastab 5+10=10+5 ja jäädvustab 5 ja 10 , mis on rühmasid hõlmavates rühmades
    \2 Rühma 2 sisu

    Ankrud

    Ankurdajad määravad sisendstringi koha, kust otsida vasteid.

    Ankur Kirjeldus Näide Sobib
    ^ Stringi algus

    Märkus: [^sulgudes] tähendab "mitte".

    ^\d+ Mis tahes arv numbreid stringi alguses.

    Veebilehel 5 kassi ja 10 koera , vasteid 5

    $ Stringi lõpp \d+$ suvaline arv numbreid stringi lõpus.

    Veebilehel 10 pluss 5 annab 15 , vastab 15

    \b Sõna piir \bjoy\b Sobib rõõm eraldi sõnana, kuid mitte nauditav .
    \B EI ole sõnapiir \Bjoy\B Sobib rõõm aadressil nauditav , kuid mitte eraldi sõnana.

    Vaheldumise (OR) konstruktsioon

    Vaheldumise operand võimaldab VÕI-loogikat, nii et saate sobitada kas seda või teist elementi.

    Konstrueeri Kirjeldus Näide Sobib
    Vastab igale üksikelemendile, mis on eraldatud vertikaalse ribaga. (s Veebilehel ta müüb merekarbid, vastab müüb ja kestad

    Look-arounds

    Lookaround-konstruktsioonid on kasulikud, kui soovite sobitada midagi, millele järgneb või ei järgne või eelneb midagi muud. Neid väljendeid nimetatakse mõnikord ka "null-levi kinnitusteks" või "null-levi vasteks", sest nad sobivad pigem positsiooni kui tegelike märkidega.

    Märkus. VBA RegExi maitses ei toetata lookbehind'e.

    Muster Kirjeldus Näide Sobib
    (?=) Positiivne eelvaade X(?=Y) Sobib väljendus X, kui sellele järgneb Y (st kui X ees on Y).
    (?!) Negatiivne eelvaade X(?!Y) Vastab väljendus X, kui sellele EI järgne Y
    (?<=) Positiivne lookbehind (?<=Y)X Sobib väljendus X, kui sellele eelneb Y (st kui X taga on Y).
    (? )</td Negatiivne lookbehind (? Y)X</td Vastab väljendus X, kui sellele EI eelne Y

    Nüüd, kui te teate põhitõdesid, liigume edasi kõige huvitavama osa juurde - regexide kasutamine reaalsete andmete puhul, et analüüsida stringid ja leida vajalik teave. Kui teil on vaja rohkem üksikasju süntaksi kohta, võib abiks olla Microsofti juhend Regular Expression Language (Regulaaravaldiste keel).

    Kohandatud RegEx-funktsioonid Exceli jaoks

    Nagu juba mainitud, ei ole Microsoft Excelil sisseehitatud RegEx-funktsioone. Regulaaravaldiste võimaldamiseks oleme loonud kolm kohandatud VBA-funktsiooni (ehk kasutaja määratud funktsiooni). Võite kopeerida koodid allpool lingitud lehekülgedelt või meie näidistööraamatust ja seejärel kleepida need oma Exceli failidesse.

    Kuidas VBA RegExp funktsioonid töötavad

    See osa selgitab sisemist mehaanikat ja võib olla huvitav neile, kes tahavad täpselt teada, mis toimub backendis.

    Selleks, et hakata VBAs kasutama regulaarseid väljendeid, tuleb kas aktiveerida RegExi objektiviide raamatukogu või kasutada funktsiooni CreateObject. Et säästa viide seadistamise vaeva VBA redaktoris, valisime viimase lähenemisviisi.

    RegExp objektil on 4 omadust:

    • Muster - on muster sobitada sisendstringi.
    • Globaalne - kontrollib, kas leida kõik vasted sisendstringist või ainult esimene. Meie funktsioonides on see seatud True, et saada kõik matšid .
    • MultiLine - määrab, kas mitme rea stringide muster sobib üle reavahetuste või ainult esimese rea puhul. Meie koodides on see seatud True, et otsida igas reas .
    • IgnoreCase - määrab, kas regulaaravaldis on suur- ja väiketunnuslik (vaikimisi) või väiketunnustamata (määratud True). Meie puhul sõltub see sellest, kuidas te konfigureerite valikulise parameetri match_case vaikimisi on kõik funktsioonid suur- ja väiketähelepanu .

    VBA RegExp piirangud

    Excel VBA rakendab põhilisi regex-mustreid, kuid sellel puuduvad paljud täiustatud funktsioonid, mis on kättesaadavad .NET-is, Perlis, Javas ja teistes regex-mootorites. Näiteks ei toeta VBA RegExp rea-moodustusi, nagu (?i) suur- ja väiketähelepanuta sobitamise jaoks või (?m) mitme rea režiimi, lookbehind'i, POSIX-klasside, kui nimetada vaid mõned.

    Exceli Regex Match funktsioon

    The RegExpMatch funktsioon otsib sisendsõnast teksti, mis vastab regulaaravaldisele, ja tagastab TRUE, kui vaste leitakse, vastasel juhul FALSE.

    RegExpMatch(text, pattern, [match_case])

    Kus:

    • Tekst (nõutav) - üks või mitu stringi, mille järgi otsida.
    • Muster (nõutav) - vastavuses olev regulaaravaldis.
    • Match_case (valikuline) - vaste tüüp. TRUE või välja jäetud - suur- ja väiketähelepanu; FALSE - suur- ja väiketähelepanu puudumine.

    Funktsiooni kood on siin.

    Näide: kuidas kasutada regulaarseid väljendeid stringide sobitamiseks

    Oletame, et soovite allpool esitatud andmestikus tuvastada SKU-koode sisaldavaid kirjeid.

    Arvestades, et iga SKU algab kahe suure tähega, millele järgneb sidekriips ja seejärel 4 numbrit, saate neid sobitada järgmise väljendi abil.

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

    Kus [A-Z]{2} tähendab mis tahes 2 suurtähte A-st Z-ni ja \d{4} tähendab mis tahes 4 numbrit 0-st 9-ni. Sõnapiir \b näitab, et SKU on eraldi sõna ja mitte osa suuremast stringist.

    Kui muster on loodud, alustage valemi kirjutamist nagu tavaliselt ja funktsiooni nimi ilmub Exceli automaatse täitmise pakutud nimekirja:

    Eeldades, et algne string on A5, on valem järgmine:

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

    Mugavuse huvides võite sisestada regulaaravaldise eraldi lahtrisse ja kasutada absoluutset viidet ($A$2) jaoks muster See tagab, et lahtri aadress jääb muutumatuks, kui kopeerite valemi teistesse lahtritesse:

    =RegExpMatch(A5, $A$2)

    Et kuvada TRUE ja FALSE asemel oma tekstimärgiseid, pesitsege RegExpMatch funktsioonis IF ja määrake soovitud tekstid lahtrisse value_if_true ja value_if_false argumendid:

    =IF(RegExpMatch(A5, $A$2), "Jah", "Ei")

    Rohkem valemite näiteid vt:

    • Kuidas sobitada stringid regulaaravaldiste abil
    • Exceli andmete valideerimine regexidega

    Exceli Regexi väljavõtte funktsioon

    The RegExpExtract funktsioon otsib allsõnu, mis vastavad regulaaravaldisele, ja võtab kõik vasted või konkreetse vaste.

    RegExpExtract(text, pattern, [instance_num], [match_case])

    Kus:

    • Tekst (nõutav) - tekstirida, mille järgi otsitakse.
    • Muster (nõutav) - vastavuses olev regulaaravaldis.
    • Instance_num (valikuline) - seerianumber, mis näitab, millist eksemplari ekstraheerida. Kui see jäetakse välja, tagastatakse kõik leitud vasted (vaikimisi).
    • Match_case (valikuline) - määrab, kas tekstilahtrid sobivad (TRUE või jäetakse välja) või kas neid ignoreeritakse (FALSE).

    Funktsiooni koodi saate siit.

    Näide: kuidas eraldada stringid regulaaravaldiste abil

    Võttes meie näite veidi edasi, võtame arvete numbrid välja. Selleks kasutame väga lihtsat regexi, mis vastab mis tahes 7-kohalisele numbrile:

    Muster : \b\d\7}\b

    Pane muster A2 ja saad selle kompaktse ja elegantse valemiga töö tehtud:

    =RegExpExtract(A5, $A$2)

    Kui muster on leitud, siis valemi abil saadakse välja arve number, kui ei leita vasteid, siis ei tagastata midagi.

    Rohkem näiteid leiate dokumendist: Kuidas regexi abil stringid Excelis ekstraheerida.

    Exceli Regexi asendusfunktsioon

    The RegExpReplace funktsioon asendab regexile vastavad väärtused teie poolt määratud tekstiga.

    RegExpReplace(text, pattern, replacement, [instance_num], [match_case])

    Kus:

    • Tekst (nõutav) - tekstirida, mille järgi otsitakse.
    • Muster (nõutav) - vastavuses olev regulaaravaldis.
    • Asendus (nõutav) - tekst, millega asendatakse sobivad alamsõnumid.
    • Instance_num (valikuline) - asendatav instants. Vaikimisi on "kõik vasted".
    • Match_case (valikuline) - kontrollib, kas teksti suurust sobitada (TRUE või jäetakse välja) või ignoreerida (FALSE).

    Funktsiooni kood on saadaval siin.

    Näide: kuidas asendada või eemaldada stringid regexide abil

    Mõned meie kirjed sisaldavad krediitkaardi numbreid. See teave on konfidentsiaalne ja võib-olla soovite selle millegi teisega asendada või üldse kustutada. Mõlemat ülesannet saab täita abiga RegExpReplace funktsioon. Kuidas? Teises stsenaariumis asendame tühja stringiga.

    Meie näidistabelis on kõigil kaardinumbritel 16 numbrit, mis on kirjutatud 4 gruppi, mis on eraldatud tühikutega. Nende leidmiseks kordame mustrit, kasutades seda regulaaravaldist:

    Muster : \b\d{4} \d{4} \d{4} \d{4} \d{4}\b

    Asendamiseks kasutatakse järgmist stringi:

    Asendus : XXXX XXXX XXXX XXXX XXXX XXXX

    Ja siin on täielik valem, et asendada krediitkaardinumbreid koos tundmatu teabega:

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

    Kui regex ja asendustekst asuvad eraldi lahtrites (A2 ja B2), töötab valem võrdselt hästi:

    Excelis on "eemaldamine" "asendamise" erijuhtum. Et eemaldada krediitkaardinumbreid, siis kasutage lihtsalt tühja stringi ("") jaoks asendamine argument:

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

    Vihje. Tühjade ridade eemaldamiseks tulemustes võite kasutada teist RegExpReplace funktsiooni, nagu on näidatud selles näites: Kuidas eemaldada tühjad read regexi abil.

    Lisateabe saamiseks vt:

    • Kuidas asendada stringid Excelis regexi abil
    • Kuidas eemaldada stringid regexi abil
    • Kuidas eemaldada tühikuid regexide abil

    Regex tööriistad sobitamise, väljavõtte, asendamise ja alltekstide eemaldamise jaoks

    Meie Ultimate Suite'i kasutajad saavad kogu regulaaravaldiste võimsuse ilma ühegi koodirea sisestamiseta oma töövihikutesse. Kogu vajaliku koodi on kirjutanud meie arendajad ja see on paigaldamise ajal sujuvalt teie Excelisse integreeritud.

    Erinevalt eespool käsitletud VBA funktsioonidest on Ultimate Suite'i funktsioonid .NET-põhised, mis annab kaks peamist eelist:

    1. Saate kasutada regulaarseid väljendeid tavalistes .xlsx töövihikutes ilma VBA koodi lisamata ja neid makrofunktsiooniga failidena salvestades.
    2. .NET Regex mootor toetab täisfunktsionaalseid klassikalisi regulaarseid väljendeid, mis võimaldab teil luua keerukamaid mustreid.

    Kuidas kasutada Regexi Excelis

    Kui Ultimate Suite on paigaldatud, on regulaaravaldiste kasutamine Excelis nii lihtne kui need kaks sammu:

    1. On Ablebits andmed vahekaardil Tekst rühma, klõpsake Regex tööriistad .

    2. On Regex tööriistad paneelil tehke järgmist:
      • Valige lähteandmed.
      • Sisestage oma regexi muster.
      • Valige soovitud valik: Match , Väljavõte , Eemaldage või Asendage .
      • Et saada tulemus valemi ja mitte väärtuse kujul, valige käsk Sisesta valemina märkeruut.
      • Vajutage tegevusnuppu.

      Näiteks krediitkaardi numbrite eemaldamiseks lahtritest A2:A6, seadistame järgmised seaded:

    Trice, AblebitsRegex funktsioon sisestatakse uude veergu paremale teie algsetest andmetest. Meie puhul on valem:

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

    Kui valem on olemas, saate seda redigeerida, kopeerida või teisaldada nagu mis tahes algupärast valemit.

    Kuidas sisestada Regexi valemit otse lahtrisse

    AblebitsRegex-funktsioone saab sisestada ka otse lahtrisse ilma add-in'i kasutajaliidest kasutamata. Siin on, kuidas:

    1. Klõpsake nuppu fx nuppu valemiribal või Sisestage funktsioon kohta Valemid vahekaart.
    2. In the Sisestage funktsioon dialoogiaknas valige AblebitsUDFs kategooria, valige huvipakkuv funktsioon ja klõpsake OK.

    3. Määrake funktsiooni argumendid nagu tavaliselt ja klõpsake OK. Valmis!

    Lisateavet leiate veebilehelt Regex Tools for Excel.

    See on, kuidas kasutada regulaarseid väljendeid teksti sobitamiseks, väljavõtmiseks, asendamiseks ja eemaldamiseks Exceli lahtrites. Tänan teid lugemise eest ja ootan teid järgmisel nädalal meie blogis!

    Saadaolevad allalaadimised

    Excel Regex - valemite näited (.xlsm fail)

    Ultimate Suite - prooviversioon (.exe fail)

    Michael Brown on pühendunud tehnoloogia entusiast, kelle kirg on tarkvaratööriistade abil keerukate protsesside lihtsustamine. Rohkem kui kümneaastase kogemusega tehnoloogiatööstuses on ta lihvinud oma oskusi Microsoft Excelis ja Outlookis, samuti Google Sheetsis ja Docsis. Michaeli ajaveebi eesmärk on jagada oma teadmisi ja teadmisi teistega, pakkudes hõlpsasti järgitavaid näpunäiteid ja õpetusi tootlikkuse ja tõhususe parandamiseks. Olenemata sellest, kas olete kogenud professionaal või algaja, pakub Michaeli ajaveebi väärtuslikke teadmisi ja praktilisi nõuandeid nende oluliste tarkvaratööriistade maksimaalseks kasutamiseks.