Sadržaj
Nikad ne možete razumjeti zašto regularni izrazi nisu podržani u formulama programa Excel? Sada jesu :) S našim prilagođenim funkcijama možete jednostavno pronaći, zamijeniti, izdvojiti i ukloniti nizove koji odgovaraju određenom uzorku.
Na prvi pogled, Excel ima sve što vam može zatrebati za tekstualni niz manipulacije. Hmm... što je s regularnim izrazima? Ups, u Excelu nema ugrađenih Regex funkcija. Ali nitko ne kaže da ne možemo stvoriti vlastite :)
Što je regularni izraz?
Regularni izraz (aka regex ili regexp ) je posebno kodirani niz znakova koji definira obrazac pretraživanja. Pomoću tog uzorka možete pronaći odgovarajuću kombinaciju znakova u nizu ili potvrditi unos podataka. Ako ste upoznati s notacijom zamjenskih znakova, o regularnim izrazima možete razmišljati kao o naprednoj verziji zamjenskih znakova.
Regularni izrazi imaju vlastitu sintaksu koja se sastoji od posebnih znakova, operatora i konstrukcija. Na primjer, [0-5] odgovara bilo kojoj jednoj znamenki od 0 do 5.
Regularni izrazi koriste se u mnogim programskim jezicima uključujući JavaScript i VBA. Potonji ima poseban RegExp objekt, koji ćemo koristiti za stvaranje naših prilagođenih funkcija.
Podržava li Excel regex?
Nažalost, u Excelu nema ugrađenih Regex funkcija. Da biste mogli koristiti regularne izraze u svojim formulama, morat ćete stvoriti vlastitu korisnički definiranu funkciju (VBAargumenti:
=IF(RegExpMatch(A5, $A$2), "Yes", "No")
Za više primjera formula pogledajte:
- Kako uskladiti nizove pomoću regularnih izraza
- Provjera valjanosti podataka programa Excel s regularnim izrazima
Funkcija Excel Regex Extract
Funkcija RegExpExtract traži podnizove koji odgovaraju regularnom izrazu i izdvaja sve podudaranja ili određeno podudaranje.
RegExpExtract(text, pattern, [instance_num], [match_case])Gdje:
- Text (obavezno) - tekstualni niz za pretraživanje in.
- Uzorak (obavezno) - regularni izraz za podudaranje.
- Instance_num (neobavezno) - serijski broj koji označava koju instancu ekstrakt. Ako je izostavljeno, vraća sve pronađene podudarnosti (zadano).
- Match_case (neobavezno) - definira hoće li se podudarati (TRUE ili izostavljeno) ili zanemariti (FALSE) velika i mala slova teksta.
Ovdje možete dobiti kôd funkcije.
Primjer: kako izdvojiti nizove pomoću regularnih izraza
Idemo li naš primjer malo dalje, izdvojimo brojeve faktura. Za ovo ćemo koristiti vrlo jednostavan regularni izraz koji se podudara s bilo kojim 7-znamenkastim brojem:
Uzorak : \b\d{7}\b
Stavi uzorak u A2 i obavit ćete posao s ovom kompaktnom i elegantnom formulom:
=RegExpExtract(A5, $A$2)
Ako se uzorak podudara, formula izdvaja broj fakture, ako se ne podudara - ništa se ne vraća.
Za više primjera pogledajte: Kako izdvojiti nizove u Excelupomoću regularnog izraza.
Funkcija Excel Regex Replace
Funkcija RegExpReplace zamjenjuje vrijednosti koje odgovaraju regularnom izrazu s tekstom koji navedete.
RegExpReplace(tekst, uzorak, zamjena , [instance_num], [match_case])Gdje:
- Tekst (obavezno) - tekstualni niz za pretraživanje.
- Uzorak (obavezno) - regularni izraz za podudaranje.
- Zamjena (obavezno) - tekst kojim će se zamijeniti odgovarajući podnizovi.
- Instance_num (neobavezno) - instanca koju treba zamijeniti. Zadana postavka je "sva podudaranja".
- Match_case (izborno) - kontrolira hoće li se podudarati (ISTINA ili izostavljeno) ili zanemariti (NETOČNO) velika i mala slova teksta.
Kôd funkcije dostupan je ovdje.
Primjer: kako zamijeniti ili ukloniti nizove pomoću regularnih izraza
Neki od naših zapisa sadrže brojeve kreditnih kartica. Ove informacije su povjerljive i možda ćete ih htjeti nečim zamijeniti ili potpuno izbrisati. Oba zadatka mogu se izvršiti uz pomoć funkcije RegExpReplace . Kako? U drugom scenariju, zamijenit ćemo praznim nizom.
U našoj uzornoj tablici, svi brojevi kartica imaju 16 znamenki, koje su napisane u 4 grupe odvojene razmacima. Da bismo ih pronašli, repliciramo uzorak koristeći ovaj regularni izraz:
Uzorak : \b\d{4} \d{4} \d{4} \d{4}\ b
Za zamjenu koristi se sljedeći niz:
Zamjena : XXXX XXXX XXXXXXXX
I evo potpune formule za zamjenu brojeva kreditnih kartica neosjetljivim informacijama:
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX")
S regularnim izrazom i zamjenskim tekstom u zasebnim ćelijama ( A2 i B2), formula radi jednako dobro:
U Excelu, "uklanjanje" je poseban slučaj "zamjene". Za uklanjanje brojeva kreditnih kartica, samo upotrijebite prazan niz ("") za zamjenski argument:
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "")
Savjet. Da biste namjestili prazne retke u rezultatima, možete koristiti drugu funkciju RegExpReplace kao što je prikazano u ovom primjeru: Kako ukloniti prazne retke pomoću regularnog izraza.
Za više informacija, molimo pogledajte:
- Kako zamijeniti nizove u Excelu pomoću regularnih izraza
- Kako ukloniti nizove pomoću regularnih izraza
- Kako ukloniti razmake pomoću regularnih izraza
Alati za regularne izraze za podudaranje, izdvajanje , zamjena i uklanjanje podnizova
Korisnici našeg Ultimate Suitea mogu dobiti svu moć regularnih izraza bez umetanja i jedne linije koda u svoje radne knjige. Sav potreban kod napisali su naši programeri i glatko ga integrirali u vaš Excel tijekom instalacije.
Za razliku od VBA funkcija o kojima smo govorili gore, funkcije Ultimate Suite-a temelje se na .NET-u, što daje dvije glavne prednosti:
- Možete koristiti regularne izraze u normalnim .xlsx radnim knjigama bez dodavanja bilo kakvog VBA koda i potrebe da ih spremate kao datoteke s omogućenim makronaredbama.
- Mehanizam .NET Regex podržava klasičnu verziju s punim značajkamaregularne izraze, koji vam omogućuju konstruiranje sofisticiranijih uzoraka.
Kako koristiti Regex u Excelu
S instaliranim Ultimate Suiteom, korištenje regularnih izraza u Excelu jednostavno je kao ova dva koraka :
- Na kartici Ablebits Data , u grupi Text kliknite Regex Tools .
- Na oknu Alati za regularne izraze učinite sljedeće:
- Odaberite izvorne podatke.
- Unesite svoj uzorak regularnih izraza.
- Odaberite željenu opciju: Match , Extract , Remove ili Replace .
- Da biste dobili rezultat kao formulu, a ne vrijednost, potvrdite okvir Umetni kao formulu .
- Pritisnite akcijski gumb.
Na primjer, za uklanjanje brojeva kreditnih kartica iz ćelija A2:A6, konfiguriramo ove postavke:
U tren oka, funkcija AblebitsRegex bit će umetnuta u novi stupac s desne strane vašeg originala podaci. U našem slučaju, formula je:
=AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4}\b")
Kad je formula tu, možete je uređivati, kopirati ili premještati kao bilo koju izvornu formulu.
Kako umetnuti formulu Regex izravno u ćeliju
Funkcije AblebitsRegex također se mogu umetnuti izravno u ćeliju bez korištenja sučelja dodatka. Evo kako:
- Kliknite gumb fx na traci formule ili Umetni funkciju na kartici Formule .
- U dijaloškom okviru Insert Function odaberite AblebitsUDFs kategoriju, odaberite funkciju od interesa i kliknite U redu.
- Definirajte argumente funkcije kao što inače radite i kliknite U redu. Gotovo!
Za više informacija pogledajte Alati za regularne izraze za Excel.
Tako se koriste regularni izrazi za podudaranje, izdvajanje, zamjenu i uklanjanje teksta u Excel ćelijama. Zahvaljujem vam na čitanju i radujem se što ćemo vas vidjeti na našem blogu sljedeći tjedan!
Dostupna preuzimanja
Excel Regex - primjeri formula (.xlsm datoteka)
Ultimate Suite - probna verzija (.exe datoteka)
ili temeljen na .NET-u) ili instalirajte alate trećih strana koji podržavaju regularne izraze.Excel Regex cheat sheet
Bez obzira na to je li uzorak regularnog izraza vrlo jednostavan ili iznimno sofisticiran, izgrađen je korištenjem uobičajene sintakse. Ovaj vodič nema za cilj naučiti vas regularne izraze. Za to postoji mnogo izvora na internetu, od besplatnih vodiča za početnike do vrhunskih tečajeva za napredne korisnike.
U nastavku pružamo kratku referencu na glavne RegEx uzorke koji će vam pomoći da shvatite osnove. Može poslužiti i kao vaša lista za prevare kada proučavate daljnje primjere.
Ako ste zadovoljni regularnim izrazima, možete odmah prijeći na funkcije RegExp.
Likovi
Ovi su najčešće korišteni uzorci za podudaranje određenih znakova.
Uzorak | Opis | Primjer | Podudaranja |
. | Zamjenski znak: odgovara bilo kojem pojedinačnom znaku osim prijeloma retka | .ot | točka , hot , pot , @ot |
\d | znak znamenke: bilo koja jednoznamenka od 0 do 9 | \d | U a1b , odgovara 1 |
\D | Bilo koji znak koji NIJE znamenka | \D | U a1b odgovara a i b |
\s | Znak razmaka: razmak, tabulator, novi red i povratak na novi red | .\s. | U 3 centa , odgovara 3 c |
\S | Bilo kojiznak koji nije razmak | \S+ | U 30 centi , odgovara 30 i centima |
\w | Znak riječi: bilo koje ASCII slovo, znamenka ili podvlaka | \w+ | U 5_cats*** , odgovara 5_cats |
\W | Bilo koji znak koji NIJE alfanumerički znak ili podvlaka | \W+ | U 5_cats*** , odgovara *** |
\t | Tab | ||
\n | Novi red | \n\d+ | U dva reda niz ispod, odgovara 10 5 mačaka 10 pasa |
\ | Izbjegava posebno značenje znaka, tako da možete potražite ga | \. \w+\. | Izbjegava točku tako da možete pronaći doslovno "." znak u nizu Mr. , Mrs. , Prof. |
Klase znakova
Upotrebom ovih uzoraka možete spojiti elemente različitih skupova znakova.
Uzorak | Opis | Primjer | Odgovara |
[znakovi] | Odgovara bilo kojem pojedinačnom znaku u zagradama | d[oi]g | pas i kopaj |
[^znakovi] | Odgovara bilo kojem znaku koji NE stoji u zagradama | d[^oi]g | Odgovara dag, dug , d1g Ne odgovara dog i dig |
[od–do] | Odgovara bilo kojem znaku u rasponu izmeđuzagrade | [0-9] [a-z] [A-Z] | Bilo koja pojedinačna znamenka od 0 do 9 Bilo koje jedno malo slovo Bilo koje pojedinačno veliko slovo |
Kvantifikatori
Kvantifikatori su posebni izrazi koji određuju broj znakova za podudaranje. Kvantifikator se uvijek primjenjuje na znak ispred njega.
Uzorak | Opis | Primjer | Odgovara |
* | Nula ili više pojavljivanja | 1a* | 1, 1a , 1aa, 1aaa , itd. |
+ | Jedno ili više pojavljivanja | po+ | U pot , odgovara po U poor , odgovara poo |
? | Nula ili jedna pojava | roa?d | road, rod |
*? | Nula ili više pojavljivanja, ali što je moguće manje | 1a*? | U 1a , 1aa i 1aaa , odgovara 1a |
+? | Jedno ili više pojavljivanja, ali što je manje moguće | po+? | U pot i poor , odgovara po |
?? | Nula ili jedno pojavljivanje , ali što je moguće manje | roa?? | U road i rod , odgovara ro |
{n} | Odgovara prethodnom uzorku n puta | \d{3} | Točno 3 znamenke |
{n ,} | Odgovara prethodnom uzorku n ili više puta | \d{3,} | 3 ili više znamenki |
{n,m} | Odgovaraprethodni uzorak između n i m puta | \d{3,5} | Od 3 do 5 znamenki |
Grupiranje
Konstrukcije grupiranja koriste se za hvatanje podniza iz izvornog niza, tako da možete izvesti neke operacije s njim.
Sintaksa | Opis | Primjer | Podudaranja |
(uzorak) | Grupa za hvatanje: hvata odgovarajući podniz i dodjeljuje mu redni broj | (\d+) | U 5 mačaka i 10 pasa , snima 5 (skupina 1) i 10 (skupina 2) |
(?:uzorak) | Grupa bez hvatanja: odgovara grupi, ali je ne hvata | (\d+)(?: psi) | U 5 mačaka i 10 pasa , snima 10 |
\1 | Sadržaj grupe 1 | (\d+)\+(\d+)=\2\+\1 | Odgovara 5+10=10+5 i hvata 5 i 10 , koji su u grupama za snimanje |
\2 | Sadržaj grupe 2 |
Sidra
Sidra određuju poziciju u nizu unosa gdje treba tražiti podudaranje.
Sidro | Opis | Primjer | Podudaranja |
^ | Početak niza Napomena: [^unutar zagrada] znači "ne" | ^\d+ | Bilo koji broj znamenki na početak niza. U 5 mačaka i 10 pasa odgovara 5 |
$ | Kraj niza | \d+$ | Bilo koji broj znamenki na kraju niza. U 10Y |
(?<=) | Pozitivno gledanje iza | (?<=Y)X | Odgovara izrazu X kada mu prethodi Y (tj. ako postoji Y iza X) |
(? | Negativno gledanje iza | (? | Podudara se s izrazom X kada mu ispred NIJE Y |
Sada kada znate ono bitno, prijeđimo na najzanimljiviji dio - korištenje regexe na stvarnim podacima za raščlanjivanje nizova i pronalaženje potrebnih informacija. Ako trebate više pojedinosti o sintaksi, Microsoftov vodič o jeziku regularnih izraza može se pokazati korisnim.
Prilagođene RegEx funkcije za Excel
Kao što je već spomenuto, Microsoft Excel nema ugrađene RegEx funkcije. Kako bismo omogućili regularne izraze, stvorili smo tri prilagođene VBA funkcije (poznate i kao korisnički definirane funkcije). Možete kopirati kodove sa stranica s vezama u nastavku ili iz našeg uzorka radnu knjigu, a zatim zalijepite vlastite Excel datoteke.
Kako funkcioniraju funkcije VBA RegExp
Ovaj odjeljak objašnjava unutarnju mehaniku i može biti int. namijenjeno onima koji žele točno znati što se događa u pozadini.
Da biste počeli koristiti regularne izraze u VBA-u, morate ili aktivirati referentnu knjižnicu RegEx objekata ili koristiti funkciju CreateObject. Kako bismo vas uštedjeli u postavljanju reference u VBA uređivaču, odabrali smo potonji pristup.
Objekt RegExp ima 4 svojstva:
- Uzorak - je uzorak za podudaranje u ulaznom nizu.
- Globalno - kontrolira hoće li se pronaći svi rezultati u ulaznom nizu ili samo prvi. U našim funkcijama, postavljeno je na True da dobije sva podudaranja .
- MultiLine - određuje hoće li se podudarati s uzorkom preko prijeloma redaka u nizovima s više redaka ili samo u prvom redu. U našim kodovima, postavljeno je na True za pretraživanje u svakom retku .
- IgnoreCase - definira je li regularni izraz osjetljiv na velika i mala slova (zadano) ili velika i mala slova neosjetljivo (postavljeno na True). U našem slučaju to ovisi o tome kako konfigurirate izborni parametar match_case . Prema zadanim postavkama, sve su funkcije osjetljive na velika i mala slova .
VBA RegExp ograničenja
Excel VBA implementira bitne uzorke regularnih izraza, ali mu nedostaju mnoge napredne značajke dostupan u .NET, Perl, Java i drugim regex strojevima. Na primjer, VBA RegExp ne podržava ugrađene modifikatore kao što je (?i) za podudaranje bez obzira na velika i mala slova ili (?m) za način rada s više redaka, lookbehinds, POSIX klase, da spomenemo samo neke.
Excel Regex Funkcija podudaranja
Funkcija RegExpMatch traži ulazni niz za tekstom koji odgovara regularnom izrazu i vraća TRUE ako se pronađe podudaranje, FALSE u suprotnom.
RegExpMatch(text, pattern, [ match_case])Gdje:
- Tekst (obavezno) - jedan ili više nizova za pretraživanje.
- Uzorak ( potrebno) - redovitiizraz za podudaranje.
- Match_case (neobavezno) - vrsta podudaranja. TOČNO ili izostavljeno - osjetljivo na velika i mala slova; FALSE - neosjetljivo je na velika i mala slova
Kôd funkcije je ovdje.
Primjer: kako koristiti regularne izraze za podudaranje nizova
U donjem skupu podataka, pretpostavimo da želite za identifikaciju unosa koji sadrže SKU kodove.
S obzirom na to da svaki SKU počinje s 2 velika slova, nakon čega slijedi crtica, nakon čega slijede 4 znamenke, možete ih spojiti pomoću sljedećeg izraza.
Uzorak : \b[A-Z]{2}-\d{4}\b
Gdje [A-Z]{2} znači bilo koja 2 velika slova od A do Z i \d{4 } znači bilo koje 4 znamenke od 0 do 9. Granica riječi \b označava da je SKU zasebna riječ, a ne dio većeg niza.
S utvrđenim uzorkom, počnite upisivati formulu kao što inače činite , a naziv funkcije pojavit će se na popisu koji predlaže Excelov AutoComplete:
Pod pretpostavkom da je izvorni niz u formatu A5, formula je sljedeća:
=RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")
Radi praktičnosti, možete unijeti regularni izraz u zasebnu ćeliju i koristiti apsolutnu referencu ($A$2) za argument uzorak t. Ovo osigurava da će adresa ćelije ostati nepromijenjena kada kopirate formulu u druge ćelije:
=RegExpMatch(A5, $A$2)
Za prikaz vlastitih tekstualnih oznaka umjesto TRUE i FALSE, ugniježdite RegExpMatch u funkciju IF i navedite željene tekstove u value_if_true i value_if_false plus 5 daje 15 , odgovara 15
Konstrukcija alternacije (OR)
Operand alternacije omogućuje logiku ILI, tako da možete spojiti ovaj ili onaj element.
Konstrukcija | Opis | Primjer | Odgovara |