Excel RegEx-foarbylden: gebrûk fan reguliere útdrukkingen yn formules

  • Diel Dit
Michael Brown

Kin noait begripe wêrom reguliere útdrukkingen net wurde stipe yn Excel-formules? No, se binne :) Mei ús oanpaste funksjes kinne jo maklik stringen fine, ferfange, ekstrahearje en fuortsmite dy't oerienkomme mei in spesifyk patroan.

Op it earste gesicht hat Excel alles wat jo oait nedich hawwe kinne foar tekststring. manipulaasjes. Hmm ... hoe sit it mei reguliere útdrukkingen? Oeps, d'r binne gjin ynboude Regex-funksjes yn Excel. Mar gjinien seit dat wy ús eigen net kinne meitsje :)

    Wat is reguliere ekspresje?

    In reguliere ekspresje (aka regex of >regexp ) is in spesjaal kodearre folchoarder fan tekens dy't in sykpatroan definiearret. Mei help fan dat patroan, kinne jo fine in oerienkommende karakter kombinaasje yn in tekenrige of falidearje gegevens ynfier. As jo ​​​​bekend binne mei in jokertekennotaasje, kinne jo oan regexes tinke as in avansearre ferzje fan jokertekens.

    Reguliere útdrukkingen hawwe in eigen syntaksis dy't bestiet út spesjale tekens, operators en konstruksjes. Bygelyks, [0-5] komt oerien mei elk inkeld sifer fan 0 oant 5.

    Reguliere útdrukkingen wurde brûkt yn in protte programmeartalen, ynklusyf JavaScript en VBA. Dat lêste hat in spesjaal RegExp-objekt, dat wy sille brûke om ús oanpaste funksjes te meitsjen.

    Stipe Excel regex?

    Spitigernôch binne d'r gjin ynboude Regex-funksjes yn Excel. Om reguliere útdrukkingen yn jo formules te brûken, moatte jo jo eigen troch brûkers definieare funksje (VBA) oanmeitsjearguminten:

    =IF(RegExpMatch(A5, $A$2), "Yes", "No")

    Sjoch foar mear formulefoarbylden:

    • Hoe kinne stringen oerienkomme mei reguliere útdrukkingen
    • Excel Data Validation with regexes

    Excel Regex Extract function

    De funksje RegExpExtract siket nei substrings dy't oerienkomme mei in reguliere ekspresje en ekstrahearje alle wedstriden of spesifike oerienkomst.

    RegExpExtract(tekst, patroan, [instance_num], [match_case])

    Wêr:

    • Tekst (ferplicht) - de tekststring om te sykjen in.
    • Patroan (ferplicht) - de reguliere ekspresje dy't oerienkomt.
    • Instance_num (opsjoneel) - in searjenûmer dat oanjout hokker eksimplaar jo moatte extract. As weglating, jout alle fûn oerienkomsten (standert) werom.
    • Match_case (opsjoneel) - bepaalt of it oerienkomt (TRUE of weilitten) of negearje (FALSE) tekstcase.

    Jo kinne hjir de koade fan 'e funksje krije.

    Foarbyld: hoe't jo stringen ekstrahearje mei help fan reguliere útdrukkingen

    Nim ús foarbyld wat fierder, lit ús faktuernûmers ekstrahearje. Hjirfoar sille wy in heul ienfâldige regex brûke dy't oerienkomt mei elk 7-sifers nûmer:

    Patroan : \b\d{7}\b

    Put it patroan yn A2 en jo krije it wurk dien mei dizze kompakte en elegante formule:

    =RegExpExtract(A5, $A$2)

    As in patroan oerienkomt, ekstrahearret de formule in faktuernûmer, as der gjin oerienkomst wurdt fûn - neat wurdt weromjûn.

    Foar mear foarbylden, sjoch asjebleaft: How to extract strings in Excelmei help fan regex.

    Excel Regex Replace-funksje

    De funksje RegExpReplace ferfangt de wearden dy't oerienkomme mei in regex mei de tekst dy't jo oantsjutte.

    RegExpReplace(tekst, patroan, ferfanging , [instance_num], [match_case])

    Wêr:

    • Tekst (ferplicht) - de tekststring om yn te sykjen.
    • Pattern (ferplicht) - de reguliere ekspresje dy't oerienkomt.
    • Ferfanging (ferplicht) - de tekst om de oerienkommende substrings te ferfangen.
    • Instance_num (opsjoneel) - it eksimplaar om te ferfangen. De standert is "alle oerienkomsten".
    • Match_case (opsjoneel) - kontrolearret of it oerienkomt (TRUE of weilitten) of negearje (FALSE) tekstcase.

    De koade fan de funksje is hjir beskikber.

    Foarbyld: hoe't jo stringen ferfange of ferwiderje mei regexes

    Guon fan ús records befetsje kredytkaartnûmers. Dizze ynformaasje is fertroulik, en jo kinne it ferfange mei wat of hielendal wiskje. Beide taken kinne wurde útfierd mei help fan de funksje RegExpReplace . Hoe? Yn in twadde senario sille wy ferfange troch in lege tekenrige.

    Yn ús foarbyldtabel hawwe alle kaartnûmers 16 sifers, dy't skreaun binne yn 4 groepen skieden mei spaasjes. Om se te finen, replikearje wy it patroan mei dizze reguliere ekspresje:

    Patroan : \b\d{4} \d{4} \d{4} \d{4}\ b

    Foar ferfanging wurdt de folgjende tekenrige brûkt:

    Ferfanging : XXXX XXXX XXXXXXXX

    En hjir is in folsleine formule foar ferfanging kredytkaartnûmers mei ûngefoelige ynformaasje:

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

    Mei de regex en ferfangende tekst yn aparte sellen ( A2 en B2), wurket de formule like goed:

    Yn Excel is "ferwiderje" in bepaald gefal fan "ferfange". Om ferwiderje kredytkaartnûmers, brûk gewoan in lege tekenrige ("") foar it ferfanging argumint:

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

    Tip. Om rigen fan lege rigels yn 'e resultaten te krijen, kinne jo in oare RegExpReplace-funksje brûke lykas yn dit foarbyld sjen litten: Hoe kinne jo lege rigels fuortsmite mei regex.

    Foar mear ynformaasje, sjoch:

    • Hoe kinne jo stringen yn Excel ferfange mei regex
    • Hoe stringen ferwiderje mei regex
    • Hoe wite romte ôfbrekke mei regexen

    Regex-ark om te passen, ekstrahearje , substrings ferfange en fuortsmite

    De brûkers fan ús Ultimate Suite kinne alle krêft krije fan reguliere útdrukkingen sûnder ien inkelde rigel koade yn har wurkboeken yn te setten. Alle nedige koade wurdt skreaun troch ús ûntwikkelders en soepel yntegreare yn jo Excel by ynstallaasje.

    Oars as de hjirboppe besprutsen VBA-funksjes, binne de funksjes fan Ultimate Suite .NET basearre, wat twa haad foardielen jout:

    1. Jo kinne reguliere útdrukkingen brûke yn normale .xlsx-wurkboeken sûnder in VBA-koade ta te foegjen en se te bewarjen as makro-ynskeakele bestannen.
    2. .NET Regex-motor stipet klassiker mei folsleine funksjes.reguliere útdrukkingen, wêrtroch jo mear ferfine patroanen kinne konstruearje.

    Hoe kinne jo Regex brûke yn Excel

    Mei de Ultimate Suite ynstalleare, is it brûken fan reguliere útdrukkingen yn Excel sa ienfâldich as dizze twa stappen :

    1. Op de Ablebits Data ljepper, yn de Tekst groep, klikje op Regex Tools .

    2. Do it folgjende yn it Regex-ark -paniel:
      • Selektearje de boarnegegevens.
      • Fier jo regex-patroan yn.
      • Kies de winske opsje: Match , Extract , Remove of Ferfange .
      • Om it resultaat te krijen as formule en net wearde, selektearje it karfakje Infoegje as formule .
      • Klik op de aksjeknop.

      Om bygelyks kredytkaartnûmers út sellen te ferwiderjen A2:A6, wy konfigurearje dizze ynstellings:

    Yn in trize sil in AblebitsRegex-funksje yn in nije kolom rjochts fan jo orizjineel ynfoege wurde data. Yn ús gefal is de formule:

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

    As de formule der is, kinne jo it bewurkje, kopiearje of ferpleatse lykas elke native formule.

    Hoe kinne jo in Regex-formule direkt yn in sel ynfoegje

    De funksjes fan AblebitsRegex kinne ek direkt yn in sel ynfoege wurde sûnder de ynterface fan 'e add-in te brûken. Hjir is hoe:

    1. Klik op de knop fx op de formulebalke of Funksje ynfoegje op it ljepblêd Formules .
    2. Selektearje yn it dialoochfinster Funksje ynfoegje de AblebitsUDFs kategory, kies de funksje fan belang en klik op OK.

    3. Definiearje de arguminten fan 'e funksje lykas jo normaal dogge en klikje op OK. Dien!

    Sjoch foar mear ynformaasje Regex-ark foar Excel.

    Dat is hoe't jo reguliere útdrukkingen brûke om tekst yn Excel-sellen te passen, út te pakken, te ferfangen en te ferwiderjen. Ik tankje jo foar it lêzen en sjoch út nei jo te sjen op ús blog nije wike!

    Beskikbere downloads

    Excel Regex - formulefoarbylden (.xlsm-bestân)

    Ultimate Suite - proefferzje (.exe-bestân)

    of .NET basearre) of ynstalleare ark fan tredden dy't regexes stypje.

    Excel Regex cheat sheet

    Of in regex-patroan is heul ienfâldich of ekstreem ferfine, it is boud mei de mienskiplike syntaksis. Dizze tutorial is net fan doel om jo reguliere útdrukkingen te learen. Hjirfoar binne d'r in soad boarnen online, fan fergese tutorials foar begjinners oant premium kursussen foar avansearre brûkers.

    Hjirûnder jouwe wy in rappe ferwizing nei de wichtichste RegEx-patroanen dy't jo helpe om de basis te begripen. It kin ek wurkje as jo cheat sheet by it bestudearjen fan fierdere foarbylden.

    As jo ​​noflik binne mei reguliere útdrukkingen, kinne jo direkt nei de RegExp-funksjes springe.

    Karakters

    Dizze binne de meast brûkte patroanen om oerien te kommen mei bepaalde tekens.

    Patroan Beskriuwing Foarbyld Oerienkomsten
    . Jokerteken: komt oerien mei elk inkeld karakter útsein in rigelbreuk .ot punt , hot , pot , @ot
    \d Siferkarakter: elk inkeld sifer fan 0 oant 9 \d Yn a1b komt oerien mei 1
    \D Elk teken dat NET in sifer is \D Yn a1b komt oerien mei a en b
    \s Whitespace-karakter: spaasje, ljepper, nije rigel en koetsreturn .\s. In 3 sinten , komt oerien mei 3 c
    \S Elkenon-whitespace-teken \S+ Yn 30 sinten komt oerien mei 30 en sint
    \w Wurdkarakter: elke ASCII-letter, sifer of underscore \w+ In 5_cats*** , komt oerien mei 5_cats
    \W Elk teken dat NET in alfanumerike karakter of underscore is \W+ Yn 5_cats*** , oerienkomsten ***
    \t Tab
    \n Nije line \n\d+ Yn de twa-rigel string hjirûnder, komt oerien mei 10

    5 katten

    10 hûnen

    \ Untkomment spesjale betsjutting fan in karakter, sadat jo kinne sykje it \.

    \w+\.

    Escapes in punt, sadat jo de letterlike "." karakter yn in tekenrige

    Mr. , Mef. , Prof.

    Karakterklassen

    Mei dizze patroanen kinne jo eleminten fan ferskillende tekensets oerienkomme.

    Patroan Beskriuwing Foarbyld Komt oerien mei
    [karakters] Komt oerien mei elk inkeld karakter yn de heakjes d[oi]g hûn en dig
    [^tekens] Komt oerien mei ien inkeld karakter NET yn de heakjes d[^oi]g Komt net oerien mei hûn en d1g

    Komt net oerien mei hûn en dig

    [fan-nei] Komt oerien mei elk karakter yn it berik tusken deheakjes [0-9]

    [a-z]

    [A-Z]

    Elke ien sifer fan 0 oant 9

    Elke inkele lytse letter

    Elke inkele haadletter

    Kwantifisearrings

    Kwantifiers binne spesjale útdrukkingen dy't it oantal karakters oantsjutte dat oerienkomt. In kwantifier jildt altyd foar it karakter dêrfoar.

    Patroan Beskriuwing Foarbyld Oerienkomsten
    * Nul of mear foarfallen 1a* 1, 1a , 1aa, 1aaa , ensfh.
    + Ien of mear foarfallen po+ Yn pot , komt oerien mei po

    Yn earm komt oerien mei poo

    ? Nul of ien foarfal roa?d road, rod
    *? Nul of mear foarfallen, mar sa minder mooglik 1a*? Yn 1a , 1aa en 1aaa komt oerien mei 1a
    +? Ien of mear foarfallen, mar sa minder mooglik po+? In pot en earm komt oerien mei po
    ?? Nul of ien foarkommen , mar sa min mooglik roa?? In road en rod komt oerien mei ro
    {n} Komt n kear oerien mei it foargeande patroan \d{3} Precies 3 sifers
    {n ,} Komt oerien mei it foargeande patroan n of mear kearen \d{3,} 3 of mear sifers
    {n,m} Komt oerien mei defoarôfgeande patroan tusken n en m kear \d{3,5} Fan 3 oant 5 sifers

    Groepen

    Groepkonstruksjes wurde brûkt om in substring fan 'e boarnestring te fangen, sadat jo dêr wat operaasje mei kinne útfiere.

    Syntaksis Beskriuwing Foarbyld Oerienkomsten
    (patroan) Capturing group: vangt in oerienkommende substring en jout it in rangnûmer ta (\d+) Yn 5 katten en 10 hûnen , fangen 5 (groep 1) en 10 (groep 2)
    (?:pattern) Non-capturing group: komt oerien mei in groep, mar fange it net (\d+)(?: dogs) Yn 5 katten en 10 hûnen , fange 10
    \1 Ynhâld fan groep 1 (\d+)\+(\d+)=\2\+\1 Komt oerien mei 5+10=10+5 en fangt 5 en 10 , dy't yn opfanggroepen binne
    \2 Ynhâld fan groep 2

    Ankers

    Ankers spesifisearje in posysje yn 'e ynfierstring wêr't se nei sykje in wedstriid.

    Anker Beskriuwing Foarbyld Oerienkomsten
    ^ Begjin fan tekenrige

    Opmerking: [^binnen heakjes] betsjut "net"

    ^\d+ Elk oantal sifers by de begjin fan de snaar.

    Yn 5 katten en 10 hûnen komt oerien mei 5

    $ Ein fan tekenrige \d+$ Elk oantal sifers oan it ein fan de tekenrige.

    In 10Y

    (?<=) Positive lookbehind (?<=Y)X Komt oerien mei ekspresje X as it wurdt foarôfgien troch Y (d.w.s. as der Y efter fan X is)
    (? Negative lookbehind (? Komt oerien mei útdrukking X as it NET foarôfgeand wurdt troch Y

    No't jo de essensjele dingen witte, litte wy trochgean nei it meast nijsgjirrige diel - brûke regexes op echte gegevens om stringen te parsearjen en de fereaske ynformaasje te finen. As jo ​​mear details oer de syntaksis nedich binne, kin de Microsoft-gids oer Regular Expression Language nuttich wêze.

    Aanpaste RegEx-funksjes foar Excel

    Lykas al neamd, hat Microsoft Excel gjin ynboude RegEx-funksjes. Om reguliere útdrukkingen yn te skeakeljen, hawwe wy trije oanpaste VBA-funksjes makke (alias brûkers-definieare funksjes). Jo kinne de koades kopiearje fan 'e ûndersteande keppele siden of fan ús foarbyld wurkboek, en plak dan yn jo eigen Excel-bestannen.

    Hoe't VBA RegExp-funksjes wurkje

    Dizze seksje ferklearret de ynderlike meganika en kin int wêze eresting oan dyjingen dy't krekt wolle witte wat der bart oan 'e efterkant.

    Om te begjinnen mei it brûken fan reguliere útdrukkingen yn VBA, moatte jo de RegEx-objektferwizingsbibleteek aktivearje of de CreateObject-funksje brûke. Om jo de muoite te besparjen om de referinsje yn 'e VBA-bewurker te setten, hawwe wy de lêste oanpak keazen.

    It RegExp-objekt hat 4 eigenskippen:

    • Patroan - is de patroan om te passen yn 'e ynfierstring.
    • Globaal - kontrolearret oft alle oerienkomsten yn 'e ynfierstring of allinich de earste fûn wurde moatte. Yn ús funksjes is it ynsteld op Wier om alle oerienkomsten te krijen.
    • MultiLine - bepaalt of it patroan oerienkomt oer line-ôfbrekken yn snaren mei meardere rigels of allinich yn de earste rigel. Yn ús koades is it ynsteld op Wier om yn elke rigel te sykjen.
    • IgnoreCase - definiearret oft in reguliere ekspresje haadlettergefoelich is (standert) of haadlettergefoel. insensitive (ynsteld op Wier). Yn ús gefal hinget dat ôf fan hoe't jo de opsjonele parameter match_case ynstelle. Standert binne alle funksjes hoofdlettergefoel .

    VBA RegExp-beheinings

    Excel VBA ymplementearret de essensjele regex-patroanen, mar it ûntbrekt in protte avansearre funksjes beskikber yn .NET, Perl, Java, en oare regex-motoren. Bygelyks, VBA RegExp stipet gjin ynline modifiers lykas (?i) foar haadletter-ûngefoelige matching of (?m) foar multi-line modus, lookbehinds, POSIX-klassen, om in pear te neamen.

    Excel Regex Matchfunksje

    De funksje RegExpMatch siket in ynfierstring foar tekst dy't oerienkomt mei in reguliere ekspresje en jout TRUE werom as in oerienkomst fûn wurdt, oars FALSE.

    RegExpMatch(tekst, patroan, [ match_case])

    Wêr:

    • Tekst (ferplicht) - ien of mear tekenrige om yn te sykjen.
    • Patroan ( fereaske) - de reguliereekspresje om te passen.
    • Match_case (opsjoneel) - oerienkomsttype. TRUE of weilitten - haadlettergefoelich; FALSE - case-insensitive

    De koade fan de funksje is hjir.

    Foarbyld: hoe't jo reguliere útdrukkingen brûke om stringen te passen

    Stel yn 'e ûnderste dataset dat jo wolle om de yngongen te identifisearjen dy't SKU-koades befetsje.

    Sjoen dat elke SKU begjint mei 2 haadletters, folge troch in koppelteken, folge troch 4 sifers, kinne jo se oerienkomme mei de folgjende útdrukking.

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

    Dêr't [A-Z]{2} alle 2 haadletters fan A oant Z en \d{4 betsjut } betsjut alle 4 sifers fan 0 oant 9. In wurdgrins \b jout oan dat in SKU in apart wurd is en gjin diel fan in gruttere tekenrige.

    Begjin mei it fêststelde patroan in formule te typen lykas jo normaal dogge , en de namme fan 'e funksje sil ferskine yn' e list foarsteld troch Excel's AutoComplete:

    As de orizjinele tekenrige yn A5 is, giet de formule as folget:

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

    Foar it gemak kinne jo de reguliere ekspresje ynfiere yn in aparte sel en in absolute referinsje ($A$2) brûke foar it patroan argumen t. Dit soarget derfoar dat it seladres ûnferoare bliuwt as jo de formule nei oare sellen kopiearje:

    =RegExpMatch(A5, $A$2)

    Om jo eigen tekstlabels wer te jaan ynstee fan TRUE en FALSE, nêst RegExpMatch yn 'e IF-funksje en spesifisearje de winske teksten yn de wearde_as_wier en wearde_as_falsk plus 5 jout 15 , komt oerien mei 15

    \b Wurdgrins \bjoy\b Komt oerien mei freugde as apart wurd, mar net yn njochlik . \B NET in wurdgrins \Bjoy\B Komt oerien mei freugde yn njochlik , mar net as apart wurd.

    Alternation (OR) konstruksje

    De alternation operand makket de OR logika mooglik, sadat jo dit of dat elemint oerienkomme kinne.

    Construct Beskriuwing Foarbyld Oerienkomsten

    Michael Brown is in tawijd technology-entûsjast mei in passy foar it ferienfâldigjen fan komplekse prosessen mei software-ark. Mei mear as in desennium ûnderfining yn 'e tech-yndustry hat hy syn feardigens yn Microsoft Excel en Outlook, lykas Google Blêden en Docs, oanskerpe. Michael's blog is wijd oan it dielen fan syn kennis en ekspertize mei oaren, en biedt maklik te folgjen tips en tutorials foar it ferbetterjen fan produktiviteit en effisjinsje. Oft jo in betûfte profesjonele of in begjinner binne, Michael's blog biedt weardefolle ynsjoch en praktysk advys om it measte út dizze essensjele software-ark te heljen.