Sisukord
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:
- Saate kasutada regulaarseid väljendeid tavalistes .xlsx töövihikutes ilma VBA koodi lisamata ja neid makrofunktsiooniga failidena salvestades.
- .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:
- On Ablebits andmed vahekaardil Tekst rühma, klõpsake Regex tööriistad .
- 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:
- Klõpsake nuppu fx nuppu valemiribal või Sisestage funktsioon kohta Valemid vahekaart.
- In the Sisestage funktsioon dialoogiaknas valige AblebitsUDFs kategooria, valige huvipakkuv funktsioon ja klõpsake OK.
- 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)