Exemplos de Excel RegEx: uso de expresións regulares en fórmulas

  • Comparte Isto
Michael Brown

Nunca pode entender por que as expresións regulares non se admiten nas fórmulas de Excel? Agora, son :) Coas nosas funcións personalizadas, pode atopar, substituír, extraer e eliminar facilmente cadeas que coincidan cun patrón específico.

A primeira vista, Excel ten todo o que poida necesitar para a cadea de texto. manipulacións. Hmm... e as expresións regulares? Vaia, non hai funcións regex integradas en Excel. Pero ninguén di que non podemos crear as nosas propias :)

    Que é a expresión regular?

    Unha expresión regular (tamén coñecida como regex ou regexp ) é unha secuencia de caracteres especialmente codificada que define un patrón de busca. Usando ese patrón, podes atopar unha combinación de caracteres coincidente nunha cadea ou validar a entrada de datos. Se estás familiarizado coa notación de comodíns, podes pensar nas regex como unha versión avanzada de comodíns.

    As expresións regulares teñen a súa propia sintaxe que consiste en caracteres especiais, operadores e construcións. Por exemplo, [0-5] coincide con calquera díxito do 0 ao 5.

    As expresións regulares úsanse en moitas linguaxes de programación, incluíndo JavaScript e VBA. Este último ten un obxecto RegExp especial, que utilizaremos para crear as nosas funcións personalizadas.

    Excel admite expresións regulares?

    Lamentablemente, non hai funcións regex integradas en Excel. Para poder usar expresións regulares nas túas fórmulas, terás que crear a túa propia función definida polo usuario (VBAargumentos:

    =IF(RegExpMatch(A5, $A$2), "Yes", "No")

    Para obter máis exemplos de fórmulas, consulte:

    • Como facer coincidir cadeas usando expresións regulares
    • Validación de datos de Excel con regexes

    Función de extracción de regex de Excel

    A función RegExpExtract busca subcadeas que coincidan cunha expresión regular e extrae todas as coincidencias ou coincidencia específica.

    RegExpExtract(texto, patrón, [número_instancia], [match_case])

    Onde:

    • Texto (obrigatorio): a cadea de texto para buscar in.
    • Patrón (obrigatorio): a expresión regular que debe coincidir.
    • Número_instancia (opcional) - un número de serie que indica que instancia desexa extracto. Se se omite, devolve todas as coincidencias atopadas (predeterminada).
    • Match_case (opcional) - define se hai que coincidir (VERDADEIRO ou omitir) ou ignorar (FALSO) o texto.

    Podes obter o código da función aquí.

    Exemplo: como extraer cadeas usando expresións regulares

    Levando o noso exemplo un pouco máis alá, extraemos os números de factura. Para iso, usaremos unha expresión regular moi sinxela que coincida con calquera número de 7 díxitos:

    Patrón : \b\d{7}\b

    Poñer o patrón en A2 e realizarás o traballo con esta fórmula compacta e elegante:

    =RegExpExtract(A5, $A$2)

    Se un patrón coincide, a fórmula extrae un número de factura, se non se atopa ningunha coincidencia - non se devolve nada.

    Para obter máis exemplos, consulte: Como extraer cadeas en Excelusando regex.

    Función de substitución regex de Excel

    A función RegExpReplace substitúe os valores que coinciden cunha expresión regular co texto que especifique.

    RegExpReplace(texto, patrón, substitución , [instance_num], [match_case])

    Onde:

    • Texto (obrigatorio): a cadea de texto na que se buscará.
    • Patrón (obrigatorio): a expresión regular que debe coincidir.
    • Substitución (obrigatorio): o texto para substituír as subcadeas coincidentes.
    • Número_instancia. (opcional): a instancia a substituír. O valor predeterminado é "todas as coincidencias".
    • Match_case (opcional): controla se hai que coincidir (VERDADEIRO ou omitir) ou ignorar (FALSO) o texto.

    O código da función está dispoñible aquí.

    Exemplo: como substituír ou eliminar cadeas mediante expresións regulares

    Algúns dos nosos rexistros conteñen números de tarxeta de crédito. Esta información é confidencial e é posible que queiras substituíla por algo ou eliminala por completo. Ambas tarefas pódense realizar coa axuda da función RegExpReplace . Como? Nun segundo escenario, substituiremos por unha cadea baleira.

    Na nosa táboa de mostra, todos os números de tarxeta teñen 16 díxitos, que están escritos en 4 grupos separados por espazos. Para atopalos, replicamos o patrón usando esta expresión regular:

    Patrón : \b\d{4} \d{4} \d{4} \d{4}\ b

    Para a substitución, úsase a seguinte cadea:

    Substitución : XXXX XXXX XXXXXXXX

    E aquí tes unha fórmula completa para substituír os números de tarxeta de crédito con información insensible:

    =RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX")

    Coa expresión regular e o texto de substitución en celas separadas ( A2 e B2), a fórmula funciona igual de ben:

    En Excel, "eliminar" é un caso particular de "substituír". Para eliminar números de tarxeta de crédito, só tes que usar unha cadea baleira ("") para o argumento substitución :

    =RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "")

    Consello. Para eliminar liñas baleiras nos resultados, podes usar outra función RegExpReplace como se mostra neste exemplo: Como eliminar liñas en branco usando regex.

    Para obter máis información, consulta:

    • Como substituír cadeas en Excel usando regex
    • Como eliminar cadeas usando regex
    • Como eliminar espazos en branco usando regex

    Ferramentas Regex para combinar, extraer , substituír e eliminar subcadeas

    Os usuarios da nosa Ultimate Suite poden obter todo o poder das expresións regulares sen inserir unha soa liña de código nos seus libros de traballo. Todo o código necesario está escrito polos nosos programadores e integrado no seu Excel durante a instalación.

    A diferenza das funcións VBA comentadas anteriormente, as funcións de Ultimate Suite están baseadas en .NET, o que ofrece dúas vantaxes principais:

    1. Podes usar expresións regulares en libros de traballo .xlsx normais sen engadir ningún código VBA e ter que gardalas como ficheiros habilitados para macros.
    2. O motor .NET Regex admite as funcións clásicas completas.expresións regulares, que che permiten construír patróns máis sofisticados.

    Como usar Regex en Excel

    Con Ultimate Suite instalado, usar expresións regulares en Excel é tan sinxelo coma estes dous pasos :

    1. Na pestana Datos de Ablebits , no grupo Texto , faga clic en Ferramentas Regex .

    2. No panel Ferramentas regex , faga o seguinte:
      • Seleccione os datos de orixe.
      • Introduza o seu patrón de expresión regular.
      • Escolle a opción desexada: Coincidir , Extraer , Eliminar ou Substituír .
      • Para obter o resultado como fórmula e non valor, seleccione a caixa de verificación Inserir como fórmula .
      • Preme o botón de acción.

      Por exemplo, para eliminar os números de tarxeta de crédito das celas A2:A6, configuramos estes axustes:

    En poucos minutos, inserirase unha función AblebitsRegex nunha nova columna á dereita da túa orixinal datos. No noso caso, a fórmula é:

    =AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4}\b")

    Unha vez que a fórmula estea alí, podes editala, copiala ou movela como calquera fórmula nativa.

    Como inserir unha fórmula Regex directamente nunha cela

    As funcións AblebitsRegex tamén se poden inserir directamente nunha cela sen utilizar a interface do complemento. Así é como:

    1. Fai clic no botón fx na barra de fórmulas ou en Inserir función na pestana Fórmulas .
    2. No cadro de diálogo Inserir función , seleccione AblebitsUDFs categoría, escolle a función de interese e fai clic en Aceptar.

    3. Define os argumentos da función como o fas normalmente e fai clic en Aceptar. Feito!

    Para obter máis información, consulte Ferramentas de regex para Excel.

    Así é como usar expresións regulares para combinar, extraer, substituír e eliminar texto nas celas de Excel. Grazas por ler e espero verte no noso blog a próxima semana!

    Descargas dispoñibles

    Excel Regex: exemplos de fórmulas (ficheiro .xlsm)

    Ultimate Suite - versión de proba (ficheiro .exe)

    ou baseado en .NET) ou instale ferramentas de terceiros que admitan as regex.

    Folla de trucos de Excel Regex

    Se un patrón de regex é moi sinxelo ou moi sofisticado, está construído utilizando a sintaxe común. Este tutorial non pretende ensinarche expresións regulares. Para iso, hai moitos recursos en liña, desde titoriais gratuítos para principiantes ata cursos premium para usuarios avanzados.

    A continuación fornecemos unha referencia rápida aos principais patróns RegEx que che axudarán a comprender os conceptos básicos. Tamén pode funcionar como a túa folla de trucos ao estudar máis exemplos.

    Se che gusta de expresións regulares, podes ir directamente ás funcións RegExp.

    Personaxes

    Estes son os patróns usados ​​con máis frecuencia para facer coincidir certos caracteres.

    Patrón Descrición Exemplo Coincidencias
    . Caracter comodín: coincide con calquera carácter agás un salto de liña .ot punto , hot , pot , @ot
    \d Caracter de díxito: calquera díxito de 0 a 9 \d En a1b , coincide con 1
    \D Calquera carácter que NON sexa un díxitos \D En a1b , coincide con a e b
    \s Caracter de espazo en branco: espazo, tabulación, nova liña e retorno de carro .\s. En 3 centavos , coincide con 3 c
    \S Calqueracarácter non en branco \S+ En 30 céntimos , coincide con 30 e céntimos
    \w Caracter de palabra: calquera letra ASCII, díxito ou guión baixo \w+ En 5_cats*** , coincide con 5_cats
    \W Calquera carácter que NON sexa un carácter alfanumérico ou guión baixo \W+ En 5_cats*** , coincide con ***
    \t Tab
    \n Nova liña \n\d+ Na liña de dúas liñas abaixo, coincide con 10

    5 gatos

    10 cans

    \ Escapa do significado especial dun personaxe, para que poidas búscao \.

    \w+\.

    Escape un punto para que poidas atopar o literal "." carácter nunha cadea

    Señor , Señora , Prof.

    Clases de caracteres

    Con estes patróns, podes facer coincidir elementos de diferentes conxuntos de caracteres.

    Patrón Descrición Exemplo Coincide con
    [caracteres] Coincide con calquera carácter entre corchetes d[oi]g dog e dig
    [^caracteres] Coincide con calquera carácter que NON entre corchetes d[^oi]g Coincide con dag, dug , d1g

    Non coincide con dog e cavar

    [de–a] Coincide con calquera carácter no intervalo entre ocorchetes [0-9]

    [a-z]

    [A-Z]

    Calquera díxito de 0 a 9

    Calquera letra minúscula

    Calquera letra en maiúscula única

    Cuantificadores

    Os cuantificadores son expresións especiais que especifican o número de caracteres que deben coincidir. Un cuantificador sempre se aplica ao carácter anterior.

    Patrón Descrición Exemplo Coincidencias
    * Cero ou máis ocorrencias 1a* 1, 1a , 1aa, 1aaa , etc.
    + Unha ou máis ocorrencias po+ En pot , coincide con po

    En pobre , coincide con po

    ? Cero ou unha ocorrencia roa?d estrada, vara
    *? Cero ou máis ocorrencias, pero o menor número posible 1a*? En 1a , 1aa e 1aaa , coinciden 1a
    +? Unha ou máis aparicións, pero o menor número posible po+? En pot e pobre , coincide con po
    ?? Cero ou unha ocorrencia , pero o menor número posible roa?? En estrada e rod , coincide con ro
    {n} Coincide co patrón anterior n veces \d{3} Exactamente 3 díxitos
    {n ,} Coincide co patrón anterior n ou máis veces \d{3,} 3 ou máis díxitos
    {n,m} Coincide copatrón anterior entre n e m veces \d{3,5} De 3 a 5 díxitos

    Agrupación

    As construcións de agrupación úsanse para capturar unha subcadea da cadea de orixe, polo que pode realizar algunha operación con ela.

    Sintaxe Descrición Exemplo Coincidencias
    (patrón) Grupo de captura: captura unha subcadea coincidente e asígnalle un número ordinal (\d+) En 5 gatos e 10 cans , captura 5 (grupo 1) e 10 (grupo 2)
    (?:patrón) Grupo que non captura: coincide cun grupo pero non o captura (\d+)(?: cans) En 5 gatos e 10 cans , captura 10
    \1 Contido do grupo 1 (\d+)\+(\d+)=\2\+\1 Coincide 5+10=10+5 e captura 5 e 10 , que están en grupos de captura
    \2 Contidos do grupo 2

    Áncoras

    As áncoras especifican unha posición na cadea de entrada onde buscar unha coincidencia.

    Áncora Descrición Exemplo Coincidencias
    ^ Inicio da cadea

    Nota: [^entre corchetes] significa "non"

    ^\d+ Calquera número de díxitos no inicio da cadea.

    En 5 gatos e 10 cans , coincide con 5

    $ Fin da cadea \d+$ Calquera número de díxitos ao final da cadea.

    En 10Y

    (?<=) Aspecto posterior positivo (?<=Y)X Coincide coa expresión X cando vai precedido de Y (é dicir, se hai Y detrás de X)
    (? Mirada negativa atrás (? Coincide coa expresión X cando NON vai precedida de Y

    Agora que coñeces o esencial, pasemos á parte máis interesante: usar regex en datos reais para analizar cadeas e atopar a información necesaria. Se precisa máis detalles sobre a sintaxe, a guía de Microsoft sobre a linguaxe de expresión regular pode resultar útil.

    Funcións personalizadas de regEx para Excel

    Como xa se mencionou, Microsoft Excel non ten funcións RegEx integradas. Para habilitar expresións regulares, creamos tres funcións de VBA personalizadas (tamén coñecidas como funcións definidas polo usuario). Podes copiar os códigos das páxinas que aparecen a continuación ou da nosa mostra. libro de traballo e despois pega os teus propios ficheiros de Excel.

    Como funcionan as funcións de VBA RegExp

    Esta sección explica a mecánica interna e pode ser int Para aqueles que queiran saber exactamente o que ocorre no backend.

    Para comezar a usar expresións regulares en VBA, cómpre activar a biblioteca de referencia de obxectos RegEx ou utilizar a función CreateObject. Para aforrarche a molestia de establecer a referencia no editor de VBA, escollemos este último enfoque.

    O obxecto RegExp ten 4 propiedades:

    • Patrón - é o patrón para coincidir na cadea de entrada.
    • Global : controla se quere atopar todas as coincidencias na cadea de entrada ou só a primeira. Nas nosas funcións, establécese como Verdadero para obter todas as coincidencias .
    • MultiLine : determina se coincide o patrón entre saltos de liña en cadeas de varias liñas ou só na primeira liña. Nos nosos códigos, establécese como True para buscar en todas as liñas .
    • IgnoreCase - define se unha expresión regular distingue entre maiúsculas e minúsculas (predeterminada) ou maiúsculas. insensible (configurado en True). No noso caso, iso depende de como configures o parámetro opcional match_case . Por defecto, todas as funcións son distingue entre maiúsculas e minúsculas .

    Limitacións de VBA RegExp

    Excel VBA implementa os patróns regex esenciais, pero carece de moitas funcións avanzadas dispoñible en .NET, Perl, Java e outros motores regex. Por exemplo, VBA RegExp non admite modificadores en liña como (?i) para a correspondencia que non distingue entre maiúsculas e minúsculas ou (?m) para o modo multiliña, lookbehinds, clases POSIX, por citar algúns.

    Excel Regex. Función de coincidencia

    A función RegExpMatch busca nunha cadea de entrada texto que coincida cunha expresión regular e devolve VERDADEIRO se se atopa unha coincidencia, FALSO en caso contrario.

    RegExpMatch(texto, patrón, [ match_case])

    Onde:

    • Texto (obrigatorio): unha ou máis cadeas para buscar.
    • Patrón ( necesario) - o regularexpresión para coincidir.
    • Match_case (opcional) - tipo de coincidencia. VERDADEIRO ou omitido: distingue entre maiúsculas e minúsculas; FALSO: non distingue entre maiúsculas e minúsculas

    O código da función está aquí.

    Exemplo: como usar expresións regulares para facer coincidir cadeas

    No seguinte conxunto de datos, supoña que quere para identificar as entradas que conteñen códigos SKU.

    Dado que cada SKU comeza con 2 letras maiúsculas, seguidas dun guión, seguido de 4 díxitos, podes relacionalos usando a seguinte expresión.

    Patrón : \b[A-Z]{2}-\d{4}\b

    Onde [A-Z]{2} significa 2 letras maiúsculas da A á Z e \d{4 } significa 4 díxitos de 0 a 9. Un límite de palabra \b indica que un SKU é unha palabra separada e non parte dunha cadea máis grande.

    Co padrón establecido, comeza a escribir unha fórmula como fai normalmente , e o nome da función aparecerá na lista suxerida polo Autocompletar de Excel:

    Asumindo que a cadea orixinal está en A5, a fórmula é o seguinte:

    =RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")

    Por comodidade, pode introducir a expresión regular nunha cela separada e usar unha referencia absoluta ($A$2) para o argumento patrón t. Isto garante que o enderezo da cela permanecerá inalterado cando copies a fórmula noutras celas:

    =RegExpMatch(A5, $A$2)

    Para mostrar as túas propias etiquetas de texto en lugar de VERDADEIRO e FALSO, aniñe RegExpMatch na función SE e especifique os textos desexados en valor_se_verdadeiro e valor_se_falso máis 5 dá 15 , coincide con 15

    \b Límite da palabra \bjoy\b Coincide con alegría como unha palabra separada, pero non en disfrutable . \B NON un límite de palabras \Bjoy\B Coincide con joy en enjoy , pero non como palabra separada.

    Construción de alternancia (OR)

    O operando de alternancia activa a lóxica OU, polo que podes facer coincidir este ou aquel elemento.

    Construír Descrición Exemplo Coincidencias

    Michael Brown é un entusiasta da tecnoloxía dedicada á súa paixón por simplificar procesos complexos mediante ferramentas de software. Con máis dunha década de experiencia na industria tecnolóxica, perfeccionou as súas habilidades en Microsoft Excel e Outlook, así como en Follas de cálculo e Documentos de Google. O blog de Michael está dedicado a compartir o seu coñecemento e experiencia con outros, proporcionando consellos e titoriais fáciles de seguir para mellorar a produtividade e a eficiencia. Tanto se es un profesional experimentado como un principiante, o blog de Michael ofrece valiosas ideas e consellos prácticos para sacar o máximo proveito destas ferramentas de software esenciais.