Taula de continguts
Mai no es pot entendre per què les expressions regulars no s'admeten a les fórmules d'Excel? Ara ho són :) Amb les nostres funcions personalitzades, podeu trobar, substituir, extreure i eliminar fàcilment les cadenes que coincideixin amb un patró específic.
A primera vista, Excel té tot el que necessiteu per a una cadena de text. manipulacions. Hmm... què passa amb les expressions regulars? Vaja, no hi ha funcions de regex integrades a Excel. Però ningú diu que no podem crear-ne els nostres propis :)
Què és l'expressió regular?
Una expressió regular (també coneguda com regex o regexp ) és una seqüència de caràcters especialment codificada que defineix un patró de cerca. Amb aquest patró, podeu trobar una combinació de caràcters coincidents en una cadena o validar l'entrada de dades. Si esteu familiaritzat amb una notació de comodí, podeu pensar que les execucions regulars són una versió avançada de comodins.
Les expressions regulars tenen la seva pròpia sintaxi que consisteix en caràcters especials, operadors i construccions. Per exemple, [0-5] coincideix amb qualsevol dígit del 0 al 5.
Les expressions regulars s'utilitzen en molts llenguatges de programació, inclosos JavaScript i VBA. Aquest últim té un objecte RegExp especial, que utilitzarem per crear les nostres funcions personalitzades.
Excel admet l'expressió regular?
Lamentablement, no hi ha funcions d'Excel regular incorporades. Per poder utilitzar expressions regulars a les vostres fórmules, haureu de crear la vostra pròpia funció definida per l'usuari (VBAarguments:
=IF(RegExpMatch(A5, $A$2), "Yes", "No")
Per obtenir més exemples de fórmules, vegeu:
- Com fer coincidir cadenes amb expressions regulars
- Validació de dades d'Excel amb execucions regulars
Funció d'extracte d'Excel Regex
La funció RegExpExtract cerca subcadenes que coincideixin amb una expressió regular i extreu totes les coincidències o coincidència específica.
RegExpExtract(text, pattern, [instance_num], [match_case])On:
- Text (obligatori): la cadena de text a cercar in.
- Patró (obligatori): l'expressió regular que coincideix.
- Núm_instància (opcional) - un número de sèrie que indica quina instància cal extracte. Si s'omet, retorna totes les coincidències trobades (per defecte).
- Match_case (opcional): defineix si s'ha de fer coincidir (VERTADER o omès) o ignorar (FALSE) de text.
Podeu obtenir el codi de la funció aquí.
Exemple: com extreure cadenes utilitzant expressions regulars
Fent el nostre exemple una mica més enllà, extreu els números de factura. Per a això, utilitzarem una expressió regular molt senzilla que coincideixi amb qualsevol nombre de 7 dígits:
Patró : \b\d{7}\b
Posar el patró a A2 i acabareu la feina amb aquesta fórmula compacta i elegant:
=RegExpExtract(A5, $A$2)
Si coincideix un patró, la fórmula extreu un número de factura, si no es troba cap coincidència. - no es retorna res.
Per obtenir més exemples, vegeu: Com extreure cadenes a Excelutilitzant regex.
Funció de substitució d'Excel Regex
La funció RegExpReplace substitueix els valors que coincideixen amb una expressió regular amb el text que especifiqueu.
RegExpReplace(text, patró, substitució). , [instance_num], [match_case])On:
- Text (obligatori): la cadena de text per cercar.
- Patró (obligatori): l'expressió regular que s'ha de fer coincidir.
- Reemplaçament (obligatori): el text per substituir les subcadenes coincidents.
- Núm_instància. (opcional): la instància a substituir. El valor predeterminat és "totes les coincidències".
- Match_case (opcional): controla si s'ha de fer coincidir (VERTADER o omès) o ignorar (FALSE) el text.
El codi de la funció està disponible aquí.
Exemple: com substituir o eliminar cadenes mitjançant execucions regulars
Alguns dels nostres registres contenen números de targeta de crèdit. Aquesta informació és confidencial i potser voldreu substituir-la per alguna cosa o suprimir-la del tot. Ambdues tasques es poden realitzar amb l'ajuda de la funció RegExpReplace . Com? En un segon escenari, la substituirem per una cadena buida.
A la nostra taula d'exemple, tots els números de targeta tenen 16 dígits, que s'escriuen en 4 grups separats per espais. Per trobar-los, repliquem el patró utilitzant aquesta expressió regular:
Patró : \b\d{4} \d{4} \d{4} \d{4}\ b
Per a la substitució, s'utilitza la cadena següent:
Substitució : XXXX XXXX XXXXXXXX
I aquí hi ha una fórmula completa per substituir els números de targeta de crèdit amb informació insensible:
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX")
Amb l'expressió regular i el text de substitució en cel·les separades ( A2 i B2), la fórmula funciona igual de bé:
A Excel, "eliminar" és un cas particular de "substituir". Per eliminar números de targeta de crèdit, només cal que utilitzeu una cadena buida ("") per a l'argument reemplaçament :
=RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "")
Consell. Per obtenir l'equip de línies buides als resultats, podeu utilitzar una altra funció RegExpReplace tal com es mostra en aquest exemple: Com eliminar les línies en blanc amb regex.
Per obtenir més informació, consulteu:
- Com substituir cadenes a Excel amb regex
- Com eliminar cadenes amb regex
- Com eliminar els espais en blanc amb regex
Eines Regex per fer coincidir, extreure , substituïu i elimineu subcadenes
Els usuaris de la nostra Ultimate Suite poden obtenir tot el poder de les expressions regulars sense inserir una sola línia de codi als seus llibres de treball. Els nostres desenvolupadors escriuen tot el codi necessari i s'integra sense problemes al vostre Excel durant la instal·lació.
A diferència de les funcions de VBA comentades anteriorment, les funcions d'Ultimate Suite es basen en .NET, la qual cosa ofereix dos avantatges principals:
- Podeu utilitzar expressions regulars en llibres de treball .xlsx normals sense afegir cap codi VBA i haver de desar-les com a fitxers amb macros.
- El motor .NET Regex admet les funcions clàssiques completes.expressions regulars, que us permeten construir patrons més sofisticats.
Com utilitzar Regex a Excel
Amb Ultimate Suite instal·lada, utilitzar expressions regulars a Excel és tan senzill com aquests dos passos :
- A la pestanya Dades d'Ablebits , al grup Text , feu clic a Eines Regex .
- A la subfinestra Eines de regex , feu el següent:
- Seleccioneu les dades d'origen.
- Introduïu el vostre patró d'expressió regular.
- Trieu l'opció desitjada: Concorda , Extreu , Elimina o Substitueix .
- Per obtenir el resultat com a fórmula i no valor, seleccioneu la casella de selecció Insereix com a fórmula .
- Premeu el botó d'acció.
Per exemple, per eliminar números de targetes de crèdit de les cel·les A2:A6, configurem aquests paràmetres:
Vegeu també: Declaració IF OR d'Excel amb exemples de fórmules
En un moment, s'inserirà una funció AblebitsRegex en una nova columna a la dreta de l'original. dades. En el nostre cas, la fórmula és:
=AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4}\b")
Un cop hi hagi la fórmula, la podeu editar, copiar o moure com qualsevol fórmula nativa.
Com inserir una fórmula Regex directament a una cel·la
Les funcions AblebitsRegex també es poden inserir directament en una cel·la sense utilitzar la interfície del complement. A continuació us indiquem com:
- Feu clic al botó fx de la barra de fórmules o a Insereix funció a la pestanya Fórmules .
- Al quadre de diàleg Insereix funció , seleccioneu AblebitsUDFs categoria, trieu la funció d'interès i feu clic a D'acord.
- Definiu els arguments de la funció com ho feu normalment i feu clic a D'acord. Fet!
Per obtenir més informació, vegeu Eines de regex per a Excel.
Així és com s'utilitzen expressions regulars per fer coincidir, extreure, substituir i eliminar text a les cel·les d'Excel. Us agraeixo la lectura i espero veure-us al nostre bloc la setmana vinent!
Descàrregues disponibles
Excel Regex: exemples de fórmules (fitxer .xlsm)
Ultimate Suite - versió de prova (fitxer .exe)
o basat en .NET) o instal·leu eines de tercers que admeten expressions regulars.Fitxa de trucs d'Excel Regex
Si un patró d'expressions regulars és molt senzill o extremadament sofisticat, es construeix utilitzant la sintaxi habitual. Aquest tutorial no pretén ensenyar-vos expressions regulars. Per a això, hi ha un munt de recursos en línia, des de tutorials gratuïts per a principiants fins a cursos premium per a usuaris avançats.
A continuació oferim una referència ràpida als patrons RegEx principals que us ajudaran a entendre els conceptes bàsics. També pot funcionar com a full de trucs quan estudieu més exemples.
Si us trobeu còmode amb les expressions regulars, podeu anar directament a les funcions de RegExp.
Caràcters
Aquests són els patrons més utilitzats per fer coincidir determinats caràcters.
Patró | Descripció | Exemple | Coincidències |
. | Caràcter comodí: coincideix amb qualsevol caràcter excepte un salt de línia | .ot | punt , hot , pot , @ot |
\d | Caràcter de dígit: qualsevol dígit de 0 a 9 | \d | A a1b , coincideix amb 1 |
\D | Qualsevol caràcter que NO sigui un dígit | \D | A a1b , coincideix amb a i b |
\s | Caràcter d'espai en blanc: espai, tabulació, línia nova i retorn de carro | .\s. | En 3 cèntims , coincideix amb 3 c |
\S | Qualsevolcaràcter no en blanc | \S+ | En 30 cèntims , coincideix amb 30 i cèntims |
\w | Caràcter de paraula: qualsevol lletra ASCII, dígit o guió baix | \w+ | A 5_cats*** , coincideix amb 5_cats |
\W | Qualsevol caràcter que NO sigui un caràcter alfanumèric o un guió baix | \W+ | A 5_cats*** , coincideix amb *** |
\t | Tab | ||
\n | Nova línia | \n\d+ | A les dues línies cadena de sota, coincideix amb 10 5 gats 10 gossos |
\ | S'escapa del significat especial d'un caràcter, de manera que podeu cerqueu-lo | \. \w+\. | S'escapa d'un punt perquè pugueu trobar el literal "." caràcter d'una cadena Sr. , Sra. , Prof. |
Classes de caràcters
Utilitzant aquests patrons, podeu fer coincidir elements de diferents conjunts de caràcters.
Patró | Descripció | Exemple | Coincideix |
[caràcters] | Coincideix amb qualsevol caràcter entre claudàtors | d[oi]g | gos i cavar |
[^caràcters] | Coincideix amb qualsevol caràcter que NO entre parèntesis | d[^oi]g | Coincideix dag, dug , d1g No coincideix amb gos i dig |
[de–a] | Coincideix amb qualsevol caràcter de l'interval entreclaudàtors | [0-9] [a-z] [A-Z] | Qualsevol dígit del 0 al 9 Qualsevol lletra minúscula Qualsevol lletra majúscula |
Quantificadors
Els quantificadors són expressions especials que especifiquen el nombre de caràcters que s'han de fer coincidir. Un quantificador sempre s'aplica al caràcter anterior.
Patró | Descripció | Exemple | Coincidències |
* | Zero o més ocurrències | 1a* | 1, 1a , 1aa, 1aaa , etc. |
+ | Una o més ocurrències | po+ | A pot , coincideix po En pobre , coincideix po |
? | Zero o una ocurrència | roa?d | carretera, vareta |
*? | Zero o més ocurrències, però el menor nombre possible | 1a*? | A 1a , 1aa i 1aaa , coincidències 1a |
+? | Una o més ocurrències, però el menor nombre possible | po+? | A pot i pobre , coincideix amb po |
?? | Zero o una ocurrència , però el menys possible | roa?? | A road i rod , coincideix amb ro |
{n} | Coincideix amb el patró anterior n vegades | \d{3} | Exactament 3 dígits |
{n ,} | Coincideix amb el patró anterior n o més vegades | \d{3,} | 3 o més dígits |
{n,m} | Coincideix ambpatró anterior entre n i m vegades | \d{3,5} | De 3 a 5 dígits |
Agrupament
Les construccions d'agrupament s'utilitzen per capturar una subcadena de la cadena d'origen, de manera que podeu realitzar alguna operació amb ella.
Sintaxi | Descripció | Exemple | Coincidències |
(patró) | Grup de captura: captura una subcadena coincident i li assigna un nombre ordinal | (\d+) | En 5 gats i 10 gossos , captura 5 (grup 1) i 10 (grup 2) |
(?:pattern) | Grup que no captura: coincideix amb un grup però no el captura | (\d+)(?: gossos) | En 5 gats i 10 gossos , captures 10 |
\1 | Continguts del grup 1 | (\d+)\+(\d+)=\2\+\1 | Coincideix 5+10=10+5 i captura 5 i 10 , que es troben en grups de captura |
\2 | Continguts del grup 2 |
Ancores
Les àncores especifiquen una posició a la cadena d'entrada on buscar una coincidència.
Àncora | Descripció | Exemple | Coincidències |
^ | Inici de la cadena Nota: [^dintre claudàtors] significa "no" | ^\d+ | Qualsevol nombre de dígits a la començament de la cadena. En 5 gats i 10 gossos , coincideix amb 5 |
$ | Final de la cadena | \d+$ | Qualsevol nombre de dígits al final de la cadena. En 10Y |
(?<=) | Mirada positiva al darrere | (?<=Y)X | Coincideix amb l'expressió X quan va precedit per Y (és a dir, si hi ha Y darrere de X) |
(? | Mirada negativa al darrere | (? | Coincideix amb l'expressió X quan NO està precedida de Y |
Ara que ja coneixeu l'essencial, passem a la part més interessant: utilitzant execucions regulars sobre dades reals per analitzar cadenes i trobar la informació necessària. Si necessiteu més detalls sobre la sintaxi, la guia de Microsoft sobre el llenguatge d'expressió regular pot resultar útil.
Funcions personalitzades d'Expressions regulars per a Excel
Com ja s'ha esmentat, Microsoft Excel no té funcions RegEx integrades. Per habilitar expressions regulars, hem creat tres funcions VBA personalitzades (també també com funcions definides per l'usuari). Podeu copiar els codis de les pàgines enllaçades a continuació o de la nostra mostra. llibre de treball i, a continuació, enganxeu els vostres propis fitxers d'Excel.
Com funcionen les funcions de VBA RegExp
Aquesta secció explica la mecànica interna i pot ser int Per a aquells que volen saber exactament què passa al fons.
Per començar a utilitzar expressions regulars a VBA, cal que activeu la biblioteca de referència d'objectes RegEx o bé utilitzeu la funció CreateObject. Per estalviar-vos la molèstia d'establir la referència a l'editor de VBA, vam triar el darrer enfocament.
L'objecte RegExp té 4 propietats:
- Patró - és el patró per coincidir a la cadena d'entrada.
- Global : controla si s'han de trobar totes les coincidències a la cadena d'entrada o només la primera. A les nostres funcions, s'estableix en True per obtenir totes les coincidències .
- MultiLine : determina si s'ha de fer coincidir el patró entre salts de línia en cadenes de diverses línies o només a la primera línia. Als nostres codis, s'estableix en True per cercar a cada línia .
- IgnoreCase : defineix si una expressió regular distingeix entre majúscules i minúscules (per defecte) o majúscules i minúscules. insensible (establert a True). En el nostre cas, això depèn de com configureu el paràmetre opcional match_case . De manera predeterminada, totes les funcions són distinguen entre majúscules i minúscules .
Limitacions de VBA RegExp
Excel VBA implementa els patrons d'expressió regular essencials, però no té moltes funcions avançades disponible en .NET, Perl, Java i altres motors d'expressió regular. Per exemple, VBA RegExp no admet modificadors en línia com (?i) per a la concordança que no distingeix entre majúscules i minúscules o (?m) per al mode multilínia, lookbehinds, classes POSIX, per citar-ne alguns.
Excel Regex. Funció de concordança
La funció RegExpMatch cerca en una cadena d'entrada text que coincideixi amb una expressió regular i retorna TRUE si es troba una coincidència, FALSE en cas contrari.
RegExpMatch(text, pattern, [ match_case])On:
- Text (obligatori) - una o més cadenes per cercar.
- Patró ( requerit) - el regularexpressió que coincideixi.
- Match_case (opcional) - tipus de coincidència. TRUE o omès: distingeix entre majúscules i minúscules; FALSE: no distingeix entre majúscules i minúscules
El codi de la funció és aquí.
Exemple: com utilitzar expressions regulars per fer coincidir cadenes
En el conjunt de dades següent, suposem que voleu per identificar les entrades que contenen codis SKU.
Atès que cada SKU comença amb 2 lletres majúscules, seguides d'un guionet i 4 dígits, podeu fer-les coincidir amb l'expressió següent.
Patró : \b[A-Z]{2}-\d{4}\b
On [A-Z]{2} significa 2 lletres majúscules de la A a la Z i \d{4 } significa 4 dígits entre 0 i 9. Un límit de paraula \b indica que un SKU és una paraula separada i no forma part d'una cadena més gran.
Amb el patró establert, comenceu a escriure una fórmula com ho feu normalment. , i el nom de la funció apareixerà a la llista suggerida per l'Autocompletar d'Excel:
Suposant que la cadena original està en A5, la fórmula és el següent:
=RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")
Per comoditat, podeu introduir l'expressió regular en una cel·la separada i utilitzar una referència absoluta ($A$2) per a l'argument patró t. Això garanteix que l'adreça de la cel·la romandrà inalterada quan copieu la fórmula a altres cel·les:
=RegExpMatch(A5, $A$2)
Per mostrar les vostres pròpies etiquetes de text en lloc de TRUE i FALSE, nideu RegExpMatch a la funció SI i especifiqueu els textos desitjats a value_if_true i value_if_false més 5 dóna 15 , coincideix amb 15
Construcció d'alternança (OR)
L'operand d'alternança activa la lògica OR, de manera que podeu fer coincidir aquest o aquell element.
Construeix | Descripció | Exemple | Coincidències |