Sadržaj
Nikad ne mogu razumjeti zašto regularni izrazi nisu podržani u Excel formulama? Sada jesu :) Sa našim prilagođenim funkcijama, lako možete 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… šta je sa regularnim izrazima? Ups, u Excelu nema ugrađenih funkcija Regex. Ali niko ne kaže da ne možemo kreirati svoje :)
Šta je regularni izraz?
Regularni izraz (aka regex ili regexp ) je posebno kodirani niz znakova koji definira obrazac pretraživanja. Koristeći taj obrazac, možete pronaći odgovarajuću kombinaciju znakova u nizu ili potvrditi unos podataka. Ako ste upoznati sa zamjenskim znakovima, možete razmišljati o redovnim izrazima 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 jednocifrenoj cifri od 0 do 5.
Regularni izrazi se koriste u mnogim programskim jezicima uključujući JavaScript i VBA. Potonji ima poseban RegExp objekat, koji ćemo koristiti za kreiranje naših prilagođenih funkcija.
Da li Excel podržava regex?
Nažalost, u Excelu nema ugrađenih funkcija Regex. Da biste mogli koristiti regularne izraze u svojim formulama, morat ćete kreirati vlastitu korisnički definiranu funkciju (VBAargumenti:
=IF(RegExpMatch(A5, $A$2), "Yes", "No")
Za više primjera formula, pogledajte:
- Kako uskladiti nizove koristeći regularne izraze
- Provjera valjanosti Excel podataka s regeksima
Excel funkcija izdvajanja regularnog izraza
Funkcija RegExpExtract traži podnizove koji odgovaraju regularnom izrazu i izdvaja sva podudaranja ili specifično podudaranje.
RegExpExtract(tekst, uzorak, [broj_instance], [match_case])Gdje:
- Tekst (obavezno) - tekstualni niz za pretraživanje in.
- Uzorak (obavezno) - regularni izraz za podudaranje.
- Broj_instance (opcionalno) - serijski broj koji pokazuje koju instancu treba ekstrakt. Ako se izostavi, vraća sva pronađena podudaranja (zadano).
- Match_case (opcionalno) - definira hoće li se podudarati (TRUE ili izostavljeno) ili zanemariti (FALSE) velika i mala slova teksta.
Ovdje možete dobiti kod funkcije.
Primjer: kako izdvojiti nizove koristeći regularne izraze
Uzmimo naš primjer malo dalje, izvučemo brojeve računa. Za ovo ćemo koristiti vrlo jednostavan regex koji odgovara bilo kojem 7-cifrenom broju:
Obrazac : \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 nije pronađeno podudaranje - ništa se ne vraća.
Za više primjera pogledajte: Kako izdvojiti nizove u Excelukoristeći regex.
Excel Regex Replace function
Funkcija RegExpReplace zamjenjuje vrijednosti koje odgovaraju regularnom izrazu sa tekstom koji navedete.
RegExpReplace(tekst, uzorak, zamjena , [instance_num], [match_case])Gdje:
- Text (obavezno) - tekstualni niz za pretraživanje.
- Obrazac (obavezno) - regularni izraz za podudaranje.
- Zamjena (obavezno) - tekst za zamjenu odgovarajućih podnizova.
- Broj_instance (opciono) - instanca za zamjenu. Zadana postavka je "sva podudaranja".
- Match_case (opcionalno) - kontrolira hoće li se podudarati (TRUE ili izostavljeno) ili zanemariti (FALSE) velika i mala slova teksta.
Kôd funkcije je dostupan 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 željeti zamijeniti nečim ili potpuno izbrisati. Oba zadatka se mogu izvršiti uz pomoć funkcije RegExpReplace . Kako? U drugom scenariju, zamijenit ćemo praznim nizom.
U našoj tabeli uzorka, svi brojevi kartica imaju 16 cifara, koje su napisane u 4 grupe odvojene razmacima. Da bismo ih pronašli, repliciramo obrazac koristeći ovaj regularni izraz:
Obrazac : \b\d{4} \d{4} \d{4} \d{4}\ b
Za zamjenu se koristi sljedeći niz:
Zamjena : XXXX XXXX XXXXXXXX
I evo potpune formule za zamjenu brojeva kreditnih kartica s neosjetljivim informacijama:
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX")
Sa regularnim izrazom i zamjenskim tekstom u zasebnim ćelijama ( A2 i B2), formula radi jednako dobro:
U Excelu, "uklanjanje" je poseban slučaj "zamjene". Da uklonite brojeve kreditnih kartica, samo koristite prazan niz ("") za argument zamjena :
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "")
Savjet. Da biste dobili rig praznih linija u rezultatima, možete koristiti drugu funkciju RegExpReplace kao što je prikazano u ovom primjeru: Kako ukloniti prazne linije koristeći regex.
Za više informacija pogledajte:
- Kako zamijeniti nizove u Excelu koristeći regex
- Kako ukloniti nizove koristeći regex
- Kako ukloniti razmak koristeći regex
Regex alati za podudaranje, izdvajanje , zamijenite i uklonite podnizove
Korisnici našeg Ultimate Suite-a mogu dobiti svu moć regularnih izraza bez umetanja jedne linije koda u svoje radne knjige. Sav potreban kod su napisali naši programeri i glatko ga integrirali u vaš Excel tokom instalacije.
Za razliku od VBA funkcija o kojima smo gore govorili, funkcije Ultimate Suite-a su bazirane 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 bez potrebe da ih spremate kao datoteke omogućene za makroe.
- .NET Regex motor podržava klasičnu potpunu funkcionalnostregularni izrazi, koji vam omogućavaju da konstruišete sofisticiranije obrasce.
Kako koristiti Regex u Excelu
Sa instaliranim paketom Ultimate Suite, korištenje regularnih izraza u Excelu je jednostavno kao ova dva koraka :
- Na kartici Ablebits Data , u grupi Text , kliknite na Regex Tools .
- U oknu Regex Tools uradite sljedeće:
- Odaberite izvorne podatke.
- Unesite svoj obrazac regularnog izraza.
- Odaberite željenu opciju: Match , Extract , Remove ili Replace .
- Da biste dobili rezultat kao formula, a ne vrijednost, potvrdite okvir Umetni kao formulu .
- Pritisnite dugme za akciju.
Na primjer, da biste uklonili brojeve kreditnih kartica iz ćelija A2:A6, konfiguriramo ove postavke:
U jednom trenutku, funkcija AblebitsRegex će biti umetnuta u novu kolonu desno od vašeg originala podaci. U našem slučaju, formula je:
=AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4}\b")
Kada je formula tamo, možete je uređivati, kopirati ili premještati kao bilo koju izvornu formulu.
Kako umetnuti formulu redovnog izraza direktno u ćeliju
Funkcije AblebitsRegex se također mogu umetnuti direktno u ćeliju bez korištenja sučelja dodatka. Evo kako:
- Kliknite na dugme fx na traci formule ili Ubaci funkciju na kartici Formule .
- U dijaloškom okviru Insert Function odaberite AblebitsUDFs kategoriju, odaberite funkciju od interesa i kliknite OK.
- Definirajte argumente funkcije kao što inače radite i kliknite na OK. Gotovo!
Za više informacija, pogledajte Regex Tools za Excel.
Tako koristite regularne izraze za podudaranje, izdvajanje, zamjenu i uklanjanje teksta u Excel ćelijama. Zahvaljujem vam na čitanju i radujem se što ću vas vidjeti na našem blogu sljedeće sedmice!
Dostupna preuzimanja
Excel Regex - primjeri formula (.xlsm datoteka)
Ultimate Suite - probna verzija (.exe fajl)
ili .NET baziran) ili instalirajte alate treće strane koji podržavaju regularne izraze.Excel Regex cheat sheet
Bilo da je obrazac regularnog izraza vrlo jednostavan ili izuzetno sofisticiran, izgrađen je korištenjem uobičajene sintakse. Ovaj vodič nema za cilj da vas nauči regularnim izrazima. Za to postoji mnogo resursa na mreži, od besplatnih tutorijala za početnike do premium kurseva za napredne korisnike.
U nastavku dajemo brzu referencu na glavne obrasce RegEx-a koji će vam pomoći da shvatite osnove. Također može raditi kao vaš cheat sheet kada proučavate daljnje primjere.
Ako ste zadovoljni regularnim izrazima, možete skočiti direktno na funkcije RegExp.
Znakovi
Ovi su najčešće korišteni obrasci koji odgovaraju određenim znakovima.
Obrazac | Opis | Primjer | Podudara se |
. | Zamjenski znak: odgovara bilo kojem pojedinačnom znaku osim prijeloma reda | .ot | tačka , vruće , lonac , @ot |
\d | Znak cifre: bilo koja jednocifra od 0 do 9 | \d | U a1b , odgovara 1 |
\D | Svaki znak koji NIJE cifra | \D | U a1b , odgovara a i b |
\s | Whitespace znak: razmak, tab, novi red i povratak na red | .\s. | U 3 centa , odgovara 3 c |
\S | Bilo kojiznak bez razmaka | \S+ | U 30 centi , odgovara 30 i centi |
\w | Znak riječi: bilo koje ASCII slovo, cifra ili donja crta | \w+ | U 5_cats*** , odgovara 5_cats |
\W | Bilo koji znak koji NIJE alfanumerički znak ili donja crta | \W+ | U 5_mačke*** , odgovara *** |
\t | Tab | ||
\n | Novi red | \n\d+ | U dvoredni niz ispod, odgovara 10 5 mačaka 10 pasa |
\ | Izbjegava posebno značenje znaka, tako da možete traži to | \. \w+\. | Izbjegava tačku tako da možete pronaći literal "." znak u nizu gospodin , gospođa , prof. |
Klase znakova
Koristeći ove obrasce, možete uskladiti elemente različitih skupova znakova.
Uzorak | Opis | Primjer | Odgovara |
[znakova] | Odgovara bilo kojem pojedinačnom znaku u zagradama | d[oi]g | dog i dig |
[^znakovi] | Odgovara bilo kojem pojedinačnom znaku NE u zagradama | d[^oi]g | Odgovara dag, dug , d1g Ne odgovara pas 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 Svako jedno malo slovo Bilo koje jedno veliko slovo |
Kvantifikatori
Kvantifikatori su posebni izrazi koji određuju broj znakova koji se podudaraju. Kvantifikator se uvijek primjenjuje na znak prije njega.
Obrazac | Opis | Primjer | Podudara se |
* | Nula ili više pojavljivanja | 1a* | 1, 1a , 1aa, 1aaa itd. |
+ | Jedno ili više pojavljivanja | po+ | U pot , odgovara po U loše , odgovara poo |
? | Nula ili jedna pojava | roa?d | put, štap |
*? | Nula ili više pojavljivanja, ali što je manje moguće | 1a*? | U 1a , 1aa i 1aaa , podudara se 1a |
+? | Jedno ili više pojavljivanja, ali što je manje moguće | po+? | U pot i loše , odgovara po |
?? | Nula ili jedna pojava , ali što manje | roa?? | U put i rod , odgovara ro |
{n} | Odgovara prethodnom uzorku n puta | \d{3} | Tačno 3 cifre |
{n ,} | Odgovara prethodnom uzorku n ili više puta | \d{3,} | 3 ili više cifara |
{n,m} | Odgovaraprethodni uzorak između n i m puta | \d{3,5} | Od 3 do 5 cifara |
Grupiranje
Konstrukcije grupiranja se koriste za hvatanje podniza iz izvornog niza, tako da možete izvršiti neke operacije s njim.
Sintaksa | Opis | Primjer | Podudara |
(uzorak) | Grupa za hvatanje: hvata odgovarajući podniz i dodjeljuje mu redni broj | (\d+) | U 5 mačaka i 10 pasa , hvata 5 (grupa 1) i 10 (grupa 2) |
(?:pattern) | Grupa koja ne hvata: 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 hvatanja |
\2 | Sadržaj grupe 2 |
Sidra
Sidra određuju poziciju u ulaznom nizu gdje treba tražiti podudaranje.
Sidro | Opis | Primjer | Podudaranja |
^ | Početak niza Napomena: [^unutarnje zagrade] znači "ne" | ^\d+ | Bilo koji broj cifara na početak niza. U 5 mačaka i 10 pasa , odgovara 5 |
$ | Kraj niza | \d+$ | Bilo koji broj cifara na kraju niza. U 10Y |
(?<=) | Pozitivan pogled iza | (?<=Y)X | Odgovara izrazu X kada mu prethodi Y (tj. ako postoji Y iza X) |
(? | Negativni pogled iza | (? | Odgovara izrazu X kada mu NE prethodi Y |
Sada kada znate suštinu, prijeđimo na najzanimljiviji dio - korištenje regularnih izraza na stvarnim podacima za raščlanjivanje nizova i pronalaženje potrebnih informacija. Ako trebate više detalja o sintaksi, Microsoftov vodič o jeziku regularnih izraza može se pokazati korisnim.
Prilagođene funkcije RegEx za Excel
Kao što je već spomenuto, Microsoft Excel nema ugrađene RegEx funkcije. Da bismo omogućili regularne izraze, kreirali smo tri prilagođene VBA funkcije (korisnički definirane funkcije). Kodove možete kopirati sa stranica dolje ili iz našeg uzorka radnu svesku, a zatim zalijepite svoje Excel datoteke.
Kako funkcionišu VBA RegExp funkcije
Ovaj odjeljak objašnjava unutrašnju mehaniku i može biti int upućujem onima koji žele da znaju šta se tačno dešava u pozadini.
Da biste počeli da koristite regularne izraze u VBA, morate ili da aktivirate referentnu biblioteku RegEx objekata ili koristite funkciju CreateObject. Da bismo vam uštedjeli nevolje pri postavljanju reference u VBA editoru, odabrali smo drugi pristup.
RegExp objekat ima 4 svojstva:
- Uzorak - je uzorak za podudaranje u ulaznom nizu.
- Globalno - kontrolira hoće li se pronaći sva podudaranja u ulaznom nizu ili samo prva. U našim funkcijama je postavljeno na True da dobije sva podudaranja .
- MultiLine - određuje hoće li se podudarati uzorak preko prijeloma reda u nizovima s više redaka ili samo u prvom redu. U našim kodovima je postavljeno na True za pretraživanje u svakom redu .
- IgnoreCase - definira da li je regularni izraz osjetljiv na velika i mala slova (podrazumevano) ili velika i mala slova- neosetljivo (podešeno na True). U našem slučaju, to ovisi o tome kako konfigurirate opcijski parametar match_case . Prema zadanim postavkama, sve funkcije su osetljive na velika i mala slova .
VBA RegExp ograničenja
Excel VBA implementira osnovne obrasce regularnih izraza, ali mu nedostaju mnoge napredne funkcije dostupno u .NET, Perl, Java i drugim regex mašinama. Na primjer, VBA RegExp ne podržava inline modifikatore kao što su (?i) za podudaranje bez obzira na velika i mala slova ili (?m) za višelinijski način rada, lookbehinds, POSIX klase, da spomenemo samo neke.
Excel Regex Funkcija podudaranja
Funkcija RegExpMatch pretražuje ulazni niz za tekst koji odgovara regularnom izrazu i vraća TRUE ako je pronađeno podudaranje, FALSE u suprotnom.
RegExpMatch(text, pattern, [ match_case])Gdje:
- Tekst (obavezno) - jedan ili više nizova za pretraživanje.
- Obrazac ( potrebno) - redovnoizraz za podudaranje.
- Match_case (opcionalno) - tip podudaranja. TRUE ili izostavljeno - osjetljivo na velika i mala slova; FALSE - bez obzira 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 sa 2 velika slova, praćena crticom, nakon čega slijede 4 cifre, možete ih upariti koristeći sljedeći izraz.
Obrazac : \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 cifre od 0 do 9. Granica riječi \b označava da je SKU posebna riječ, a ne dio većeg niza.
Sa uspostavljenim uzorkom, počnite kucati formulu kao što inače radite , a ime funkcije će se pojaviti na listi koju je predložio Excel-ov AutoComplete:
Pod pretpostavkom da je originalni niz u A5, formula ide kako slijedi:
=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)
Da biste prikazali vlastite tekstualne oznake umjesto TRUE i FALSE, ugnijezdite RegExpMatch u funkciju IF i navedite željene tekstove u value_if_true i value_if_false plus 5 daje 15 , odgovara 15
Alternaciona (ILI) konstrukcija
Operand alternacije omogućava OR logiku, tako da možete upariti ovaj ili onaj element.
Konstrukcija | Opis | Primjer | Podudaranja |