Ynhâldsopjefte
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:
- 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.
- .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 :
- Op de Ablebits Data ljepper, yn de Tekst groep, klikje op Regex Tools .
- 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:
- Klik op de knop fx op de formulebalke of Funksje ynfoegje op it ljepblêd Formules .
- Selektearje yn it dialoochfinster Funksje ynfoegje de AblebitsUDFs kategory, kies de funksje fan belang en klik op OK.
- 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
Alternation (OR) konstruksje
De alternation operand makket de OR logika mooglik, sadat jo dit of dat elemint oerienkomme kinne.
Construct | Beskriuwing | Foarbyld | Oerienkomsten |