Cuprins
Nu ați înțeles niciodată de ce expresiile regulate nu sunt acceptate în formulele Excel? Acum sunt acceptate :) Cu ajutorul funcțiilor noastre personalizate, puteți găsi, înlocui, extrage și elimina cu ușurință șirurile de caractere care corespund unui anumit model.
La prima vedere, Excel are tot ceea ce ai putea avea nevoie pentru manipularea șirurilor de text. Hmm... cum rămâne cu expresiile regulate? Oops, nu există funcții Regex încorporate în Excel. Dar nimeni nu spune că nu putem crea propriile noastre funcții :)
Ce este expresia regulată?
O expresie regulată (aka regex sau regexp ) este o secvență special codificată de caractere care definește un tipar de căutare. Folosind acest tipar, puteți găsi o combinație de caractere corespunzătoare într-un șir de caractere sau puteți valida datele introduse. Dacă sunteți familiarizat cu notația wildcard, vă puteți gândi la regexuri ca la o versiune avansată a wildcard-urilor.
Expresiile regulate au o sintaxă proprie care constă în caractere speciale, operatori și construcții. De exemplu, [0-5] se potrivește cu orice cifră unică de la 0 la 5.
Expresiile regulate sunt utilizate în multe limbaje de programare, inclusiv JavaScript și VBA. Acesta din urmă are un obiect RegExp special, pe care îl vom utiliza pentru a crea funcțiile noastre personalizate.
Excel acceptă regex?
Din păcate, nu există funcții Regex încorporate în Excel. Pentru a putea utiliza expresii regulate în formulele dvs., va trebui să creați propria funcție definită de utilizator (bazată pe VBA sau .NET) sau să instalați instrumente terțe care acceptă regexuri.
Excel Regex foaie de ieftinire Regex
Indiferent dacă un model regex este foarte simplu sau extrem de sofisticat, acesta este construit folosind sintaxa comună. Acest tutorial nu are ca scop să vă învețe expresiile regulate. Pentru aceasta, există o mulțime de resurse online, de la tutoriale gratuite pentru începători la cursuri premium pentru utilizatorii avansați.
Mai jos vă oferim o referință rapidă la principalele modele RegEx, care vă va ajuta să vă familiarizați cu elementele de bază. De asemenea, vă poate servi ca foaie de parcurs atunci când studiați alte exemple.
Dacă vă simțiți confortabil cu expresiile regulate, puteți trece direct la funcțiile RegExp.
Caractere
Acestea sunt cele mai frecvent utilizate modele pentru a se potrivi cu anumite caractere.
Model | Descriere | Exemplu | Se potrivește |
. | Caracter wildcard: se potrivește cu orice caracter unic, cu excepția unei pauze de linie | .ot | punct , fierbinte , oală , @ot |
\d | Caracter de cifră: orice cifră unică de la 0 la 9 | \d | În a1b , se potrivește 1 |
\D | Orice caracter care NU este o cifră | \D | În a1b , se potrivește a și b |
\s | Caracterul de spațiere: spațiu, tabulație, linie nouă și revenire la cărămidă | .\s. | În 3 cenți , se potrivește 3 c |
\S | Orice caracter care nu este spațiu alb | \S+ | În 30 de cenți , se potrivește 30 și cenți |
\w | Caracter de cuvânt: orice literă ASCII, cifră sau subliniere | \w+ | În 5_cats*** , se potrivește 5_cats |
\W | Orice caracter care NU este un caracter alfanumeric sau o subliniere | \W+ | În 5_cats*** , se potrivește *** |
\t | Tab | ||
\n | Linie nouă | \n\d+ | În șirul de două linii de mai jos, se potrivește 10 5 pisici 10 câini |
\ | Scapă de semnificația specială a unui caracter, astfel încât să îl puteți căuta | \. \w+\. | Scapă de un punct pentru a putea găsi caracterul literal ".." într-un șir de caractere Dl. , Dna. , Prof. |
Clase de caractere
Folosind aceste modele, puteți potrivi elemente din diferite seturi de caractere.
Model | Descriere | Exemplu | Potriviri |
[caractere] | Se potrivește cu orice caracter unic din paranteze | d[oi]g | câine și sapă |
[^caractere] | Se potrivește cu orice caracter unic care NU se află între paranteze | d[^oi]g | Potriviri dag, dug , d1g Nu se potrivește câine și sapă |
[de la la] | Potrivește orice caracter din intervalul dintre paranteze | [0-9] [a-z] [A-Z] | Orice cifră unică de la 0 la 9 Orice literă minusculă simplă Orice literă majusculă simplă |
Cuantificatori
Cuantificatorii sunt expresii speciale care specifică numărul de caractere care trebuie să se potrivească. Un cuantificator se aplică întotdeauna caracterului care îl precede.
Model | Descriere | Exemplu | Se potrivește |
* | Zero sau mai multe apariții | 1a* | 1, 1a , 1aa, 1aaa , etc. |
+ | Una sau mai multe apariții | po+ | În oală , se potrivește po În săraci , se potrivește caca |
? | Zero sau o apariție | roa?d | drum, tijă |
*? | Zero sau mai multe apariții, dar cât mai puține posibil | 1a*? | În 1a , 1aa și 1aaa , se potrivește 1a |
+? | Una sau mai multe apariții, dar cât mai puține posibil | po+? | În oală și săraci , se potrivește po |
?? | Zero sau o apariție, dar cât mai puține pe cât posibil | roa??? | În drum și tijă , se potrivește ro |
{n} | Se potrivește cu modelul precedent de n ori | \d{3} | Exact 3 cifre |
{n,} | Se potrivește cu modelul precedent de n sau mai multe ori | \d{3,} | 3 sau mai multe cifre |
{n,m} | Se potrivește cu modelul precedent între n și m ori | \d{3,5} | De la 3 la 5 cifre |
Gruparea
Construcțiile de grupare sunt utilizate pentru a captura o subșir din șirul sursă, astfel încât să puteți efectua o operațiune cu acesta.
Sintaxa | Descriere | Exemplu | Se potrivește |
(model) | Grup de captare: captează o subșiră corespunzătoare și îi atribuie un număr ordinal. | (\d+) | În 5 pisici și 10 câini , capturi 5 (grupa 1) și 10 (grupul 2) |
(?:model) | Grup care nu captează: se potrivește cu un grup, dar nu îl captează. | (\d+)(?: câini) | În 5 pisici și 10 câini , capturi 10 |
\1 | Conținutul grupei 1 | (\d+)\+(\d+)=\2\+\1 | Potrivește 5+10=10+5 și captează 5 și 10 , care se află în grupuri de captură |
\2 | Conținutul grupei 2 |
Ancore
Ancorele specifică o poziție în șirul de intrare în care se caută o potrivire.
Ancoră | Descriere | Exemplu | Potriviri |
^ | Începutul șirului Notă: [^între paranteze] înseamnă "nu". | ^\d+ | Orice număr de cifre la începutul șirului. În 5 pisici și 10 câini , se potrivește 5 |
$ | Sfârșitul șirului | \d+$ | Orice număr de cifre la sfârșitul șirului. În 10 plus 5 dă 15 , meciuri 15 |
\b | Limita cuvintelor | \bjoy\b | Potriviri bucurie ca un cuvânt separat, dar nu și în plăcută . |
\B | NU este un cuvânt limită | \Bjoy\B | Se potrivește bucurie în plăcută , dar nu ca un cuvânt separat. |
Construcția de alternanță (OR)
Operandul de alternanță activează logica OR, astfel încât să puteți potrivi fie acest element, fie acel element.
Construiți | Descriere | Exemplu | Se potrivește |
Se potrivește cu orice element unic separat de bara verticală | (s | În ea vinde scoici, se potrivește cu vinde și cochilii |
Căutări alternative
Construcțiile Lookaround sunt utile atunci când doriți să potriviți ceva care este sau nu este urmat sau precedat de altceva. Aceste expresii se numesc uneori "aserțiuni cu lățime zero" sau "potrivire cu lățime zero" deoarece se potrivesc cu o poziție mai degrabă decât cu caracterele reale.
Notă. În VBA RegEx, nu se acceptă lookbehinds.
Model | Descriere | Exemplu | Potriviri |
(?=) | Previziune pozitivă | X(?=Y) | Se potrivește cu expresia X atunci când este urmată de Y (adică dacă există Y înaintea lui X) |
(?!) | Previziune negativă | X(?!Y) | Se potrivește cu expresia X dacă NU este urmată de Y |
(?<=) | Privire pozitivă în urmă | (?<=Y)X | Potrivește expresia X atunci când este precedată de Y (adică dacă există Y în spatele lui X). |
(? )</td | Privire negativă în urmă | (? Y)X</td | Se potrivește cu expresia X atunci când aceasta NU este precedată de Y |
Acum că știți elementele esențiale, să trecem la partea cea mai interesantă - utilizarea regexurilor pe date reale pentru a analiza șiruri de caractere și a găsi informațiile necesare. Dacă aveți nevoie de mai multe detalii despre sintaxă, ghidul Microsoft privind limbajul de expresii regulate se poate dovedi util.
Funcții RegEx personalizate pentru Excel
După cum am menționat deja, Microsoft Excel nu are funcții RegEx încorporate. Pentru a activa expresiile regulate, am creat trei funcții VBA personalizate (aka funcții definite de utilizator). Puteți copia codurile de pe paginile cu linkurile de mai jos sau din exemplul nostru de registru de lucru și apoi le puteți lipi în propriile fișiere Excel.
Cum funcționează funcțiile VBA RegExp
Această secțiune explică mecanismele interne și poate fi interesantă pentru cei care doresc să știe exact ce se întâmplă în partea din spate.
Pentru a începe să folosiți expresiile regulate în VBA, trebuie fie să activați biblioteca de referințe de obiecte RegEx, fie să utilizați funcția CreateObject. Pentru a vă scuti de deranjul de a seta referința în editorul VBA, am ales această din urmă abordare.
Obiectul RegExp are 4 proprietăți:
- Model - este model pentru a se potrivi în șirul de intrare.
- Global - controlează dacă se vor găsi toate corespondențele din șirul de intrare sau doar prima. În funcțiile noastre, este setat la True pentru a obține toate meciurile .
- MultiLine - determină dacă modelul trebuie să se potrivească cu pauzele de linie în șirurile de mai multe rânduri sau numai în prima linie. În codurile noastre, este setat la True pentru a căuta în fiecare rând .
- IgnoreCase - definește dacă o expresie regulată este case-sensitive (implicit) sau case-insensitive (setată la True). În cazul nostru, acest lucru depinde de modul în care configurați parametrul opțional match_case În mod implicit, toate funcțiile sunt Sensibil la majuscule și minuscule .
Limitări VBA RegExp
Excel VBA implementează tiparele regex esențiale, dar îi lipsesc multe caracteristici avansate disponibile în .NET, Perl, Java și alte motoare regex. De exemplu, VBA RegExp nu acceptă modificatori inline, cum ar fi (?i) pentru potrivirea insensibilă la majuscule și minuscule sau (?m) pentru modul multilinie, lookbehinds, clase POSIX, pentru a numi doar câteva.
Funcția Excel Regex Match
The RegExpMatch caută într-un șir de intrare un text care se potrivește cu o expresie regulată și returnează TRUE dacă se găsește o potrivire, iar în caz contrar FALSE.
RegExpMatch(text, model, [match_case])Unde:
- Text (obligatoriu) - unul sau mai multe șiruri de caractere în care să se efectueze căutarea.
- Model (obligatoriu) - expresia regulată care trebuie să corespundă.
- Cazul_de_corespondență (opțional) - tipul de potrivire. TRUE sau omis - case-sensitive; FALSE - case-insensitive
Codul funcției este aici.
Exemplu: cum se utilizează expresiile regulate pentru a potrivi șiruri de caractere
În setul de date de mai jos, să presupunem că doriți să identificați intrările care conțin coduri SKU.
Având în vedere că fiecare SKU începe cu 2 litere majuscule, urmate de o cratimă, urmate de 4 cifre, le puteți potrivi folosind următoarea expresie.
Model : \b[A-Z]{2}-\d{4}\b
Unde [A-Z]{2} înseamnă oricare 2 litere majuscule de la A la Z și \d{4} înseamnă oricare 4 cifre de la 0 la 9. O limită de cuvânt \b indică faptul că un SKU este un cuvânt separat și nu face parte dintr-un șir mai mare.
Odată stabilit modelul, începeți să tastați o formulă așa cum o faceți în mod normal, iar numele funcției va apărea în lista sugerată de funcția AutoComplete din Excel:
Presupunând că șirul original se află în A5, formula este următoarea:
=RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")
Pentru comoditate, puteți introduce expresia regulată într-o celulă separată și puteți utiliza o referință absolută ($A$2) pentru model Acest lucru asigură faptul că adresa celulei va rămâne neschimbată atunci când copiați formula în alte celule:
=RegExpMatch(A5, $A$2)
Pentru a afișa propriile etichete de text în loc de TRUE și FALSE, aninați RegExpMatch în funcția IF și specificați textele dorite în fereastra value_if_true și value_if_false argumente:
=IF(RegExpMatch(A5, $A$2), "Da", "Nu")
Pentru mai multe exemple de formule, vă rugăm să consultați:
- Cum se potrivesc șirurile de caractere folosind expresii regulate
- Validarea datelor Excel cu regexuri
Funcția Excel Regex Extract
The RegExpExtract caută subșiruri care corespund unei expresii regulate și extrage toate corespondențele sau o corespondență specifică.
RegExpExtract(text, model, [număr_instanță], [caz_corespunzător])Unde:
- Text (obligatoriu) - șirul de text în care se efectuează căutarea.
- Model (obligatoriu) - expresia regulată care trebuie să corespundă.
- Număr_instanță (opțional) - un număr de serie care indică instanța care trebuie extrasă. Dacă se omite, se returnează toate corespondențele găsite (implicit).
- Cazul_de_corespondență (opțional) - definește dacă trebuie să se potrivească (TRUE sau omis) sau să se ignore (FALSE) cazul textului.
Puteți obține codul funcției aici.
Exemplu: cum se extrag șiruri de caractere utilizând expresii regulate
Dacă luăm exemplul nostru puțin mai departe, să extragem numerele facturilor. Pentru aceasta, vom folosi un regex foarte simplu care se potrivește cu orice număr de 7 cifre:
Model : \b\d{7}\b
Puneți modelul în A2 și vă veți face treaba cu această formulă compactă și elegantă:
=RegExpExtract(A5, $A$2)
În cazul în care se găsește un model, formula extrage un număr de factură, iar dacă nu se găsește nicio potrivire, nu se returnează nimic.
Pentru mai multe exemple, consultați: Cum să extrageți șiruri de caractere în Excel folosind regex.
Excel Regex Funcția de înlocuire Regex
The RegExpReplace înlocuiește valorile care corespund unui regex cu textul pe care îl specificați.
RegExpReplace(text, pattern, replacement, [instance_num], [match_case])Unde:
- Text (obligatoriu) - șirul de text în care se efectuează căutarea.
- Model (obligatoriu) - expresia regulată care trebuie să se potrivească.
- Înlocuire (obligatoriu) - textul cu care se înlocuiesc subșirurile corespunzătoare.
- Număr_instanță (opțional) - instanța care trebuie înlocuită. Valoarea implicită este "all matches".
- Cazul_de_corespondență (opțional) - controlează dacă trebuie să se potrivească (TRUE sau omis) sau să se ignore (FALSE) cazul textului.
Codul funcției este disponibil aici.
Exemplu: cum să înlocuiți sau să eliminați șiruri de caractere utilizând regexuri
Unele dintre înregistrările noastre conțin numere de carduri de credit. Aceste informații sunt confidențiale și este posibil să doriți să le înlocuiți cu altele sau să le ștergeți cu totul. Ambele sarcini pot fi îndeplinite cu ajutorul aplicației RegExpReplace Cum? Într-un al doilea scenariu, vom înlocui cu un șir gol.
În tabelul din exemplul nostru, toate numerele de card au 16 cifre, care sunt scrise în 4 grupuri separate prin spații. Pentru a le găsi, replicăm modelul folosind această expresie regulată:
Model : \b\d{4} \d{4} \d{4} \d{4} \d{4} \d{4}\b
Pentru înlocuire, se utilizează următorul șir de caractere:
Înlocuire : XXXX XXXX XXXX XXXX XXXX XXXX
Și iată o formulă completă pentru înlocuiți numere de carduri de credit cu informații nesigure:
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX XXXX")
Cu regex și textul de înlocuire în celule separate (A2 și B2), formula funcționează la fel de bine:
În Excel, "eliminarea" este un caz particular de "înlocuire". Pentru a eliminați numere de carduri de credit, utilizați un șir de caractere gol ("") pentru înlocuire argument:
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4} \d{4}\b", "")
Sfat: Pentru a elimina liniile goale din rezultate, puteți utiliza o altă funcție RegExpReplace, așa cum se arată în acest exemplu: Cum să eliminați liniile goale utilizând regex.
Pentru mai multe informații, vă rugăm să consultați:
- Cum se înlocuiesc șirurile de caractere în Excel folosind regex
- Cum să eliminați șiruri de caractere folosind regex
- Cum să eliminați spațiile albe folosind regexuri
Instrumente Regex pentru a potrivi, extrage, înlocui și elimina subșiruri
Utilizatorii suitei noastre Ultimate Suite pot beneficia de toată puterea expresiilor regulate fără a insera o singură linie de cod în registrele lor de lucru. Tot codul necesar este scris de dezvoltatorii noștri și este integrat fără probleme în Excel în timpul instalării.
Spre deosebire de funcțiile VBA discutate mai sus, funcțiile din Ultimate Suite sunt bazate pe .NET, ceea ce oferă două avantaje principale:
- Puteți utiliza expresii regulate în registrele de lucru .xlsx normale fără a adăuga cod VBA și fără a fi nevoie să le salvați ca fișiere cu macro.
- Motorul .NET Regex suportă expresii regulate clasice complete, ceea ce vă permite să construiți modele mai sofisticate.
Cum se utilizează Regex în Excel
Cu Ultimate Suite instalat, utilizarea expresiilor regulate în Excel este la fel de simplă ca acești doi pași:
- Pe Date Ablebits în fila Text grup, faceți clic pe Instrumente Regex .
- Pe Instrumente Regex faceți următoarele:
- Selectați datele sursă.
- Introduceți modelul regex.
- Alegeți opțiunea dorită: Meci , Extras , Eliminați sau Înlocuiți .
- Pentru a obține rezultatul ca formulă și nu ca valoare, selectați opțiunea Introduceți ca o formulă caseta de selectare.
- Apăsați butonul de acțiune.
De exemplu, pentru a elimina numerele cărților de credit din celulele A2:A6, configurăm aceste setări:
Într-o clipită, o funcție AblebitsRegex va fi inserată într-o nouă coloană în dreapta datelor originale. În cazul nostru, formula este:
=AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4} \d{4}\b")
Odată ce formula este acolo, o puteți edita, copia sau muta ca orice altă formulă nativă.
Cum să inserați o formulă Regex direct într-o celulă
Funcțiile AblebitsRegex pot fi, de asemenea, inserate direct într-o celulă fără a utiliza interfața add-in-ului. Iată cum:
- Faceți clic pe butonul fx de pe bara de formule sau Funcția de inserție pe Formule tab.
- În Funcția de inserție caseta de dialog, selectați caseta AblebitsUDFs alegeți funcția de interes și faceți clic pe OK.
- Definiți argumentele funcției așa cum faceți în mod normal și faceți clic pe OK. Gata!
Pentru mai multe informații, consultați Instrumente Regex pentru Excel.
Iată cum se utilizează expresiile regulate pentru a potrivi, extrage, înlocui și elimina text în celulele Excel. Vă mulțumesc pentru lectură și vă aștept pe blogul nostru săptămâna viitoare!
Descărcări disponibile
Excel Regex - exemple de formule (fișier .xlsm)
Ultimate Suite - versiunea de încercare (fișier .exe)