Regex para extraer cadenas en Excel (una o todas las coincidencias)

¿Te has encontrado alguna vez con la necesidad de extraer información específica de un conjunto de datos en Excel, pero no sabes por dónde empezar? ¡No te preocupes! En este artículo, exploraremos el poderoso mundo de las expresiones regulares, o regex, y cómo pueden transformar la forma en que manipulas y analisas cadenas de texto en tus hojas de cálculo. Desde extraer una única coincidencia hasta descubrir todas las que existen en tu documento, aprender a utilizar regex te permitirá optimizar tu trabajo y aumentar tu eficiencia en Excel. ¡Prepárate para desvelar los secretos ocultos de tus datos y llevar tus habilidades al siguiente nivel!

¿Alguna vez te has encontrado en la situación de tener que extraer ciertas cadenas de texto en Excel? Puede resultar tedioso y llevar mucho tiempo si lo haces de forma manual. Pero no te preocupes, ¡hay una solución! En este artículo aprenderemos a utilizar expresiones regulares, también conocidas como regex, para extraer una o todas las coincidencias de cadenas en Excel. Este método es realmente eficiente y te ayudará a agilizar tus tareas en hojas de cálculo. ¡No te lo pierdas!

En este tutorial, aprenderá cómo usar expresiones regulares en Excel para buscar y extraer subcadenas que coincidan con un patrón determinado.

Microsoft Excel proporciona una serie de funciones para extraer texto de las celdas. Esas funciones pueden hacer frente a la mayoría de los desafíos de extracción de cadenas en sus hojas de trabajo. La mayoría, pero no todos. Cuando las funciones de Texto fallan, las expresiones regulares vienen al rescate. Espera… ¡Excel no tiene funciones RegEx! Es cierto que no hay funciones incorporadas. Pero no hay nada que te impida usar los tuyos propios 🙂

Función Excel VBA Regex para extraer cadenas

Para agregar una función de extracción de expresiones regulares personalizada a su Excel, pegue el siguiente código en el editor de VBA. Para habilitar expresiones regulares en VBA, utilizamos el objeto incorporado Microsoft RegExp. El código está escrito por nuestro especialista en Excel Alex Frolov.

Público Función RegExpExtract(texto Como Cadenapatrón Como Cadena, Opcional núm_instancia Como Entero = 0, Opcional caso_partido Como Booleano = Verdadero)
Oscuro coincidencias de texto() Como Cadena
Oscuro índice_coincidencias Como Entero

En Error Ir a ErrHandl RegExpExtract = «»

Colocar expresión regular = Crear objeto(«VBScript.RegExp») expresión regular.patrón = patrón expresión regular.Global = Verdadero
expresión regular.MultiLine = Verdadero

Si Verdadero = caso_partido Entonces
expresiones regulares.ignorecase = FALSO
Demás
expresiones regulares.ignorecase = Verdadero
Fin Si

Colocar coincidencias = expresión regular.Ejecutar(texto)

Si 0 < coincidencias.Contar Entonces
Si (0 = núm_instancia) Entonces
Redim text_matches(coincidencias.Count – 1, 0)
Para índice_coincidencias = 0 A coincidencias.Count – 1 text_matches(matches_index, 0) = coincidencias.Item(matches_index)
Próximo coincidencias_index RegExpExtract = coincidencias_texto
Demás
RegExpExtract = coincidencias.Item(núm_instancia – 1)
Fin Si
Fin Si
Salida Función

ErrHandl: RegExpExtract = CVErr(xlErrValue)
Fin Función

Si tiene poca experiencia con VBA, una guía de usuario paso a paso puede resultarle útil: Cómo insertar código VBA en Excel.

Nota. Para que la función funcione, asegúrese de guardar su archivo como libro de trabajo habilitado para macros (.xlsm).

Sintaxis de RegExpExtract

El Extracción RegExp La función busca en una cadena de entrada valores que coincidan con una expresión regular y extrae una o todas las coincidencias.

La función tiene la siguiente sintaxis:

RegExpExtract(texto, patrón, [instance_num], [match_case])

Dónde:

  • Texto (obligatorio): la cadena de texto para buscar.
  • Patrón (obligatorio): la expresión regular que debe coincidir. Cuando se proporciona directamente en una fórmula, el patrón debe estar entre comillas dobles.
  • núm_instancia (opcional): un número de serie que indica qué instancia extraer. Si se omite, devuelve todas las coincidencias encontradas (predeterminado).
  • caso_partido (opcional): define si se debe hacer coincidir o ignorar el texto entre mayúsculas y minúsculas. Si es VERDADERO o se omite (predeterminado), se realiza una coincidencia que distingue entre mayúsculas y minúsculas; si es FALSO, no distingue entre mayúsculas y minúsculas.

La función funciona en todas las versiones de Excel 365, Excel 2021, Excel 2019, Excel 2016, Excel 2013 y Excel 2010.

4 cosas que debes saber sobre RegExpExtract

Para utilizar eficazmente la función en Excel, hay algunas cosas importantes que debe tener en cuenta:

  • Por defecto, la función devuelve todas las coincidencias encontradas en celdas vecinas como se muestra en este ejemplo. Para obtener una ocurrencia específica, proporcione el número correspondiente al núm_instancia argumento.
  • Por defecto, la función es distingue mayúsculas y minúsculas. Para una coincidencia que no distinga entre mayúsculas y minúsculas, establezca el caso_partido argumento a FALSO. Debido a las limitaciones de VBA, la construcción que no distingue entre mayúsculas y minúsculas (?i) no funcionará.
  • si un no se encuentra el patrón válidola función no devuelve nada (cadena vacía).
  • Si el el patrón no es válido, ¡un valor! se produce un error.
  • Antes de comenzar a utilizar esta función personalizada en sus hojas de trabajo, debe comprender de qué es capaz, ¿verdad? Los siguientes ejemplos cubren algunos casos de uso comunes y explican por qué el comportamiento puede diferir en Dynamic Array Excel (Microsoft 365 y Excel 2021) y Excel tradicional (2019 y versiones anteriores).

    Nota. Nuestros ejemplos de expresiones regulares están escritos para conjuntos de datos simples. No podemos garantizar que funcionen perfectamente en sus hojas de trabajo reales. Aquellos que tienen experiencia con expresiones regulares estarán de acuerdo en que escribir expresiones regulares es un camino interminable hacia la perfección; casi siempre hay una manera de hacerlas más elegantes o capaces de manejar una gama más amplia de datos de entrada.

    Regex para extraer el número de la cadena

    Siguiendo la máxima básica de enseñar «de lo simple a lo complejo», comenzaremos con un caso muy sencillo: extraer un número de una cadena.

    Lo primero que debe decidir es qué número recuperar: primero, último, aparición específica o todos los números.

    Extraer el primer número

    Esto es tan simple como puede ser una expresión regular. Dado que d significa cualquier dígito del 0 al 9 y + significa una o más veces, nuestra expresión regular toma esta forma:

    Patrón: d+

    Colocar núm_instancia a 1 y obtendrás el resultado deseado:

    =RegExpExtract(A5, «d+», 1)

    Donde A5 es la cadena original.

    Para mayor comodidad, puedes ingresar el patrón en una celda predefinida ($A$2) y bloquear su dirección con el signo $:

    =RegExpExtract(A5, $A$2, 1)Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Obtener el último número

    Para extraer el último número de una cadena, este es el patrón a utilizar:

    Patrón: (d+)(?!.*d)

    Traducido al lenguaje humano, dice: encuentre un número que no esté seguido (en ningún lugar, no inmediatamente) por ningún otro número. Para expresar esto, estamos usando una anticipación negativa (?!.*d), lo que significa que a la derecha del patrón no debe haber ningún otro dígito (d) independientemente de cuántos caracteres más haya antes.

    =RegExpExtract(A5, «(d+)(?!.*d)»)Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Consejos:

    • Conseguir un ocurrencia especificautilice d+ para patrón y un número de serie apropiado para núm_instancia.
    • La fórmula para extraer todos los numeros se analiza en el siguiente ejemplo.

    Regex para extraer todas las coincidencias

    Llevando nuestro ejemplo un poco más allá, supongamos que desea obtener todos los números de una cadena, no solo uno.

    Como recordarás, el número de coincidencias extraídas está controlado por el opcional núm_instancia argumento. El valor predeterminado es todas las coincidencias, por lo que simplemente omite este parámetro:

    =RegExpExtract(A2, «d+»)

    La fórmula funciona muy bien para una sola celda, pero el comportamiento difiere en Dynamic Array Excel y en las versiones no dinámicas.

    Excel 365 y Excel 2021

    Debido a la compatibilidad con matrices dinámicas, una fórmula normal se distribuye automáticamente en tantas celdas como sea necesario para mostrar todos los resultados calculados. En términos de Excel, esto se llama rango derramado:Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Excel 2019 y anteriores

    En Excel predinámico, la fórmula anterior devolvería solo una coincidencia. Para obtener múltiples coincidencias, debe convertirla en una fórmula matricial. Para esto, seleccione un rango de celdas, escriba la fórmula y presione Ctrl + Mayús + Intro para completarlo.

    Una desventaja de este enfoque es que aparecen un montón de errores #N/A en «celdas adicionales». Lamentablemente, no se puede hacer nada al respecto (ni IFERROR ni IFNA pueden solucionarlo, por desgracia).Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Extrae todas las coincidencias en una celda

    Al procesar una columna de datos, el método anterior obviamente no funcionará. En este caso, una solución ideal sería devolver todas las coincidencias en una sola celda. Para hacerlo, entregue los resultados de RegExpExtract a la función TEXTJOIN y sepárelos con cualquier delimitador que desee, digamos una coma y un espacio:

    =TEXTJOIN(«, «, TRUE, RegExpExtract(A5, «d+»))Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Nota. Debido a que la función TEXTJOIN solo está disponible en Excel para Microsoft 365, Excel 2021 y Excel 2019, la fórmula no funcionará en versiones anteriores.

    Regex para extraer texto de una cadena

    Extraer texto de una cadena alfanumérica es una tarea bastante desafiante en Excel. Con expresiones regulares, se vuelve tan fácil como un pastel. Simplemente use una clase negada para hacer coincidir todo lo que no sea un dígito.

    Patrón: [^d]+

    Para obtener subcadenas en celdas individuales (rango de derrame), la fórmula es:

    =RegExpExtract(A5, «[^d]+»)Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Para generar todas las coincidencias en una celda, anide la función RegExpExtract en TEXTJOIN de esta manera:

    =TEXTJOIN(«», TRUE, RegExpExtract(A5, «[^d]+»))Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Regex para extraer la dirección de correo electrónico de la cadena

    Para extraer una dirección de correo electrónico de una cadena que contiene mucha información diferente, escriba una expresión regular que replique la estructura de la dirección de correo electrónico.

    Patrón: [w.-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,24}

    Desglosando esta expresión regular, esto es lo que obtenemos:

    • [w.-]+ es un nombre de usuario que puede incluir 1 o más caracteres alfanuméricos, guiones bajos, puntos y guiones.
    • @ símbolo
    • [A-Za-z0-9.-]+ es un nombre de dominio que consta de: letras mayúsculas y minúsculas, dígitos, guiones y puntos (en el caso de subdominios). Aquí no se permiten guiones bajos, por lo tanto, se utilizan 3 conjuntos de caracteres diferentes (como AZ az y 0-9) en lugar de w que coincide con cualquier letra, dígito o guión bajo.
    • .[A-Za-z]{2,24} es un dominio de nivel superior. Consta de un punto seguido de letras mayúsculas y minúsculas. La mayoría de los dominios de nivel superior tienen 3 letras (por ejemplo, .com, .org, .edu, etc.), pero en teoría pueden contener de 2 a 24 letras (el TLD registrado más largo).

    Suponiendo que la cadena está en A5 y el patrón en A2, la fórmula para extraer una dirección de correo electrónico es:

    =RegExpExtract(A5, $A$2)Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Regex para extraer el dominio del correo electrónico

    Cuando se trata de extraer un dominio de correo electrónico, lo primero que me viene a la mente es utilizar un grupo de captura para encontrar el texto que sigue inmediatamente al carácter @.

    Patrón:@([A-Za-z0-9.-]+.[A-Za-z]{2,24})

    Servirlo a nuestra función RegExp:

    =RegExpExtract(A5, «@([A-Za-z0-9.-]+.[A-Za-z]{2,24})»)

    Y obtendrás este resultado:Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Con las expresiones regulares clásicas, todo lo que esté fuera de un grupo de captura no se incluye en la extracción. Nadie sabe por qué VBA RegEx funciona de manera diferente y también captura «@». Para deshacerse de él, puede eliminar el primer carácter del resultado reemplazándolo con una cadena vacía.

    =REPLACE(RegExpExtract(A5, «@([a-zd][a-zd-.]*.[a-z]{2,})», 1, FALSE), 1, 1, «»)Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Expresión regular para extraer números de teléfono.

    Los números de teléfono se pueden escribir de muchas maneras diferentes, por lo que es casi imposible encontrar una solución que funcione en todas las circunstancias. Sin embargo, puede anotar todos los formatos utilizados en su conjunto de datos e intentar compararlos.

    Para este ejemplo, crearemos una expresión regular que extraerá números de teléfono en cualquiera de estos formatos:

    (123) 345-6789

    (123) 345 6789

    (123)3456789

    123-345-6789

    123.345.6789

    123 345 6789

    1233456789

    Patrón: (?d{3}[-. )]*d{3}[-. ]?d{4}b

    • La primera parte (?d{3} coincide con cero o un paréntesis de apertura seguido de tres dígitos d{3}.
    • El [-. )]* parte significa cualquier carácter entre corchetes que aparece 0 o más veces: guión, punto, espacio o paréntesis de cierre.
    • A continuación, tenemos nuevamente tres dígitos d{3} seguidos de cualquier guión, punto o espacio. [-. ]? apareciendo 0 o 1 vez.
    • Después de eso, hay un grupo de cuatro dígitos d{4}.
    • Finalmente, hay un límite de palabra b que define que el número de teléfono que estamos buscando no puede ser parte de un número mayor.

    La fórmula completa toma esta forma:

    =RegExpExtract(A5, «(?d{3}[-. )]*d{3}[-. ]?d{4}b»)Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Tenga en cuenta que la expresión regular anterior puede devolver algunos resultados falsos positivos, como 123) 456 7899 o (123 456 7899. La siguiente versión soluciona estos problemas. Sin embargo, esta sintaxis solo funciona en funciones VBA RegExp, no en expresiones regulares clásicas. .

    Patrón: ((d{3})|d{3})[-. ]?d{3}[-. ]?d{4}b

    Regex para extraer la fecha de la cadena

    Una expresión regular para extraer una fecha depende del formato en el que aparece la fecha dentro de una cadena. Por ejemplo:

    Para extraer fechas como 1/1/21 o 01/01/2021, la expresión regular es: d{1,2}/d{1,2}/(d{4}|d{2} )

    Busca un grupo de 1 o 2 dígitos d{1,2} seguido de una barra, seguido de otro grupo de 1 o 2 dígitos, seguido de una barra, seguido de un grupo de 4 o 2 dígitos (d{4 }|d{2}). Tenga en cuenta que primero buscamos años de 4 dígitos y solo después años de 2 dígitos. Si lo escribimos al revés, de todos los años solo se resaltarán los 2 primeros dígitos. Esto se debe a que después de que la primera condición esté en la alternancia O la construcción coincida, las condiciones restantes no se verifican.

    Para recuperar fechas como 1 de enero de 21 o 01 de enero de 2021, el patrón es: d{1,2}-[A-Za-z]{3}-d{2,4}

    Busca un grupo de 1 o 2 dígitos, seguido de un guión, seguido de un grupo de 3 letras mayúsculas o minúsculas, seguido de un guión, seguido de un grupo de 4 o 2 dígitos.

    Después de combinar los dos patrones, obtenemos la siguiente expresión regular:

    Patrón: bd{1,2}[/-](d{1,2}|[A-Za-z]{3})[/-](d{4}|d{2})b

    Dónde:

    • La primera parte tiene 1 o 2 dígitos: d{1,2}
    • La segunda parte tiene 1 o 2 dígitos o 3 letras: (d{1,2}|[A-Za-z]{3})
    • La tercera parte es un grupo de 4 o 2 dígitos: (d{4}|d{2})
    • El delimitador es una barra diagonal o un guión: [/-]
    • Se coloca un límite de palabra b en ambos lados para dejar claro que una fecha es una palabra separada y no parte de una cadena más grande.

    Como puede ver en la imagen a continuación, extrae con éxito fechas y omite subcadenas como 22/11/333. Sin embargo, todavía arroja resultados falsos positivos. En nuestro caso, la subcadena 11-ABC-2222 en A9 coincide técnicamente con el formato de fecha dd-mmm-aaaa y por tanto se extrae.Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Para eliminar los falsos positivos, puede reemplazar el [A-Za-z]{3} parte con una lista completa de abreviaturas de meses de 3 letras:

    Patrón: bd{1,2}[/-](d{1,2}|(enero|febrero|marzo|abril|mayo|jun|jul|ago|septiembre|octubre|noviembre|diciembre))[/-](d{4}|d{2})b

    Para ignorar las letras mayúsculas y minúsculas, configuramos el último argumento de nuestra función personalizada en FALSO:

    =RegExpExtract(A5, $A$2, 1, FALSE)

    Y esta vez obtenemos un resultado perfecto:Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Regex para extraer el tiempo de la cadena

    Para conseguir tiempo en el hh:mm o hh:mm:ss formato, la siguiente expresión funcionará de maravilla.

    Patrón:b(0?[0-9]|1[0-2]):[0-5]d(:[0-5]d)?s?(AM|PM)b|b([0-9]|[0-1]d|2[0-3]):[0-5]d(:[0-5]d)?(?!:)

    Al desglosar esta expresión regular, puedes ver 2 partes separadas por | que habilita la lógica OR. En otras palabras, buscamos una subcadena que coincida con una de las siguientes expresiones.

    Expresión 1:b(0?[0-9]|1[0-2]):[0-5]d(:[0-5]d)?s?(AM|PM)b

    Recupera tiempos con AM/PM.

    Hora puede ser cualquier número del 0 al 12. Para obtenerlo, usamos la construcción OR ([0-9]|1[0-2]), dónde:

    • [0-9] coincide con cualquier número del 0 al 9
    • 1[0-2] coincide con cualquier número del 10 al 12

    Minuto [0-5]d es cualquier número del 00 al 59.

    Segundo (:[0-5]d)? también es cualquier número del 00 al 59. ¿El? cuantificador significa cero o una aparición, ya que los segundos pueden incluirse o no en el valor del tiempo.

    Expresión 2: b([0-9]|[0-1]d|2[0-3]):[0-5]d(:[0-5]d)?(?!:)

    Extrae horas sin AM/PM.

    El hora La parte puede ser cualquier número del 0 al 32. Para obtenerla, se utiliza una construcción OR diferente ([0-9]|[0-1]d|2[0-3]) se utiliza, donde:

    • [0-9] coincide con cualquier número del 0 al 9
    • [0-1]d coincide con cualquier número del 00 al 19
    • 2[0-3] coincide con cualquier número del 20 al 23

    El minuto y segundo Las partes son las mismas que en la expresión 1 anterior.

    La anticipación negativa (?!:) se agrega para omitir cadenas como 20:30:80.

    Como PM/AM puede estar en mayúsculas o minúsculas, hacemos que la función no distinga entre mayúsculas y minúsculas:

    =RegExpExtract(A5, $A$2, 1, FALSE)Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Con suerte, los ejemplos anteriores le brindaron algunas ideas sobre cómo usar expresiones regulares en sus hojas de cálculo de Excel. Desafortunadamente, no todas las funciones de las expresiones regulares clásicas son compatibles con VBA. Si su tarea no se puede realizar con VBA RegExp, le recomiendo que lea la siguiente parte que analiza funciones .NET Regex mucho más potentes.

    Función Regex personalizada basada en .NET para extraer texto en Excel

    A diferencia de las funciones VBA RegExp que puede escribir cualquier usuario de Excel, .NET RegEx es dominio del desarrollador. Microsoft .NET Framework admite una sintaxis de expresiones regulares con todas las funciones compatible con Perl 5. Este artículo no le enseñará cómo escribir dichas funciones (no soy programador y no tengo la menor idea de cómo hacerlo 🙂

    Nuestros desarrolladores ya han escrito e incluido en Ultimate Suite cuatro potentes funciones procesadas por el motor .NET RegEx estándar. A continuación, demostraremos algunos usos prácticos de la función especialmente diseñada para extraer texto en Excel.

    Consejo. Para obtener información sobre la sintaxis Regex de .NET, consulte Lenguaje de expresión regular .NET.

    Cómo extraer cadenas en Excel usando expresiones regulares

    Suponiendo que tiene instalada la última versión de Ultimate Suite, extraer texto usando expresiones regulares se reduce a estos dos pasos:

  • Sobre el Datos de Ablebits pestaña, en la Texto grupo, haga clic Herramientas de expresiones regulares. Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >
  • Sobre el Herramientas de expresiones regulares panel, seleccione los datos de origen, ingrese su patrón Regex y elija el Extracto opción. Para obtener el resultado como una función personalizada, no como un valor, seleccione el Insertar como fórmula casilla de verificación. Cuando termine, haga clic en el Extracto botón. Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Los resultados aparecerán en una nueva columna a la derecha de sus datos originales:Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Sintaxis de AblebitsRegexExtract

    Nuestra función personalizada tiene la siguiente sintaxis:

    AblebitsRegexExtract(referencia, expresión_regular)

    Dónde:

    • Referencia (obligatorio): una referencia a la celda que contiene la cadena de origen.
    • Expresión regular (obligatorio): el patrón de expresiones regulares que debe coincidir.

    ¡Nota IMPORTANTE! La función sólo funciona en las máquinas que tienen instalado Ultimate Suite for Excel.

    Notas de uso

    Para que su curva de aprendizaje sea más fluida y su experiencia más placentera, preste atención a estos puntos:

  • Para crear una fórmula, puede utilizar nuestro Herramientas de expresiones regulareso Excel Función de inserción o escriba el nombre completo de la función en una celda. Una vez insertada la fórmula, puedes administrarla (editar, copiar o mover) como cualquier fórmula nativa.
  • El patrón que ingresas en el Herramientas de expresiones regulares el panel va al 2Dakota del Norte argumento. También es posible mantener una expresión regular en una celda separada. En este caso, simplemente use una referencia de celda para los 2Dakota del Norte argumento.
  • La función extrae el primera coincidencia encontrada.
  • Por defecto, la función es distingue mayúsculas y minúsculas. Para coincidencias que no distingan entre mayúsculas y minúsculas, utilice el patrón (?i).
  • Si no se encuentra una coincidencia, se devuelve un error #N/A.
  • Regex para extraer una cadena entre dos caracteres

    Para obtener texto entre dos caracteres, puede utilizar un grupo de captura o búsquedas.

    Supongamos que desea extraer texto entre corchetes. Un grupo de captura es la forma más sencilla.

    Patrón 1:[(.*?)]

    Con una mirada positiva hacia atrás y hacia adelante, el resultado será exactamente el mismo.

    Patrón 2: (?<=[)(.*?)(?=])

    Preste atención a que nuestro grupo de captura (.*?) realiza una búsqueda perezosa para texto entre dos corchetes – desde el primero [ to the first ]. Un grupo de captura sin un signo de interrogación (.*) haría una búsqueda codiciosa y capturar todo desde el primero [ to the last ].

    Con el patrón en A2, la fórmula es la siguiente:

    =AblebitsRegexExtract(A5, $A$2)Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >Cómo conseguir todas las coincidencias

    Como ya se mencionó, la función AblebitsRegexExtract solo puede extraer una coincidencia. Para obtener todas las coincidencias, puedes usar el función VBA hemos discutido anteriormente. Sin embargo, hay una advertencia: VBA RegExp no admite la captura de grupos, por lo que el patrón anterior también devolverá los caracteres «límites», paréntesis en nuestro caso.

    =TEXTJOIN(» «, TRUE, RegExpExtract(A5, $A$2))Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Para deshacerse de los corchetes, SUSTITUYALOS con cadenas vacías («») usando esta fórmula:

    =SUSTITUIR(SUSTITUIR(TEXTJOIN(«, «, VERDADERO, RegExpExtract(A5, $A$2)), «]», «»),»[«,»»)

    For better readability, we are using a comma for delimiter.Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Regex to extract text between two strings

    The approach we’ve worked out for pulling out text between two characters will also work for extracting text between two strings.

    For example, to get everything between «test 1» and «test 2», use the following regular expression.

    Pattern: test 1(.*?)test 2

    The complete formula is:

    =AblebitsRegexExtract(A5, «test 1(.*?)test 2»)Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Regex to extract domain from URL

    Even with regular expressions, extracting domain names from URLs is not a trivial task. The key element that does the trick is non-capturing groups. Depending on your ultimate goal, choose one of the below regexes.

    To get a full domain name including subdomains

    Pattern: (?:https?:|^|s)//((?:[A-Za-zd-.]{2,255}.)?[A-Za-zd-]{1,63}.[A-Za-z]{2,24})

    Conseguir un segundo nivel dominio sin subdominios

    Patrón: (?:https?:|^|s)//(?:[A-Za-zd-.]{2,255}.)?([A-Za-zd-]{1,63}.[A-Za-z]{2,24})

    Ahora, veamos cómo funcionan estas expresiones regulares en un ejemplo de «https://www.mobile.ablebits.com» como URL de muestra:

    • (?:https?:|^|s) – grupo que no captura. Coincide, pero no captura, una subcadena precedida por uno de los siguientes: https, http, inicio de cadena (^), un carácter de espacio en blanco (s). Los dos últimos elementos se incluyen para manejar URL relativas al protocolo como «//google.com».
    • // – dos barras diagonales (cada una está precedida por una barra invertida para escapar del significado especial de la barra diagonal e interpretarlo literalmente).
    • (?:[A-Za-zd-.]{2,255}.)? – grupo de no captura para identificar dominios de tercer nivel, cuarto nivel, etc., si los hubiera (móvil en nuestra URL de muestra). En el primer patrón, se coloca dentro de un grupo de captura más grande para incluir todos esos subdominios en la extracción. Un subdominio puede tener entre 2 y 255 caracteres, de ahí el cuantificador {2255}.
    • ([A-Za-zd-]{1,63}.[A-Za-z]{2,24}) – grupo de captura para extraer el dominio de segundo nivel (bits capaces) y el dominio de nivel superior (com). La longitud máxima de un dominio de segundo nivel es de 63 caracteres. El dominio de nivel superior más largo que existe actualmente contiene 24 caracteres.

    Dependiendo de qué expresión regular se ingrese en A2, la siguiente fórmula producirá resultados diferentes:

    =AblebitsRegexExtract(A5, $A$2)

    Regex para extraer el nombre de dominio completo con todos los subdominios:Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Regex para extraer un segundo nivel dominio sin subdominios:Regex para extraer cadenas en Excel (una o todas las coincidencias)
    >

    Así es como se extraen partes de texto en Excel usando expresiones regulares. ¡Te agradezco por leer y espero verte en nuestro blog la próxima semana!

    Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

    Regex para extraer cadenas en Excel (una o todas las coincidencias) body { font-family: Arial, sans-serif; font-size: 16px; line-height: 1.5; }

    h2 { font-size: 24px; margin: 20px 0; font-weight: bold; }

    h3 { font-size: 20px; margin: 15px 0; font-weight: bold; }

    em { font-style: italic; }

    strong { font-weight: bold; }

    Regex para extraer cadenas en Excel (una o todas las coincidencias)

    En Excel, a menudo es necesario extraer ciertos patrones de texto de una celda o rango de celdas. Una forma eficiente de lograr esto es utilizando expresiones regulares (regex). Regex es una secuencia de caracteres que define un patrón de búsqueda. En este artículo, exploraremos cómo utilizar regex en Excel para extraer cadenas.

    ¿Qué es una expresión regular?

    Una expresión regular es una secuencia de caracteres que describe un patrón de búsqueda. En el contexto de Excel, regex nos permite buscar y extraer patrones específicos de texto en las celdas. Por ejemplo, si tenemos una lista de nombres en una columna y queremos extraer solo los nombres que comienzan con la letra «A», regex nos ayudaría a lograrlo de manera eficiente.

    ¿Cómo utilizar funciones de regex en Excel?

    Excel no tiene una función de búsqueda y extracción específica basada en regex. Sin embargo, podemos utilizar la función «FILTROAVANZADO» combinada con fórmulas regulares para lograr el mismo resultado.

    Para empezar, necesitamos seleccionar una columna adicional donde se mostrarán los resultados extraídos. A continuación, siga estos pasos:

  • Seleccione la columna que contiene los datos originales y vaya a la pestaña «Datos» en la barra de menú de Excel.
  • Haga clic en «Filtro Avanzado» en el grupo «Ordenar y filtrar».
  • En el cuadro de diálogo «Filtro Avanzado», seleccione la opción «Copiar a otro lugar».
  • En el campo «Rango de lista», seleccione la columna que contiene los datos que desea filtrar.
  • En el campo «Rango de criterios», ingrese el rango de celdas donde ingresará sus criterios de regex. Asegúrese de que las primeras celdas del rango contengan las etiquetas de los criterios.
  • Haga clic en «Aceptar» para aplicar el filtro y ver los resultados extraídos.
  • Recuerde que para utilizar regex en los criterios de filtrado, es necesario encerrar el patrón de regex entre caracteres especiales como «/». Por ejemplo, para extraer todas las cadenas que contienen la palabra «Hola», el criterio sería «/Hola/».

    Recomendaciones adicionales

    Utilizar regex puede resultar complicado al principio, pero con la práctica se vuelve más fácil. Aquí hay algunas recomendaciones adicionales que pueden ayudarlo:

    • Practique: Experimente con diferentes patrones de regex y vea cómo afectan los resultados. Cuanto más practique, más familiarizado se volverá con las capacidades y limitaciones de regex en Excel.
    • Utilice herramientas en línea: Existen numerosas herramientas en línea que le permiten probar y depurar sus expresiones regulares antes de aplicarlas en Excel. Esto puede ahorrarle tiempo y asegurarse de que su regex sea válido.
    • Referencia de regex: Siempre tenga a mano una referencia de regex que pueda consultar cuando necesite comprender funciones más avanzadas o cuando se le presenten desafíos particulares.

    Esperamos que este artículo le haya proporcionado información útil sobre cómo utilizar regex en Excel para extraer cadenas. Recuerde practicar y experimentar con distintos patrones de regex para obtener resultados precisos y eficientes.

    Fuentes recomendadas para aprender más sobre regex en Excel:

  • Soporte de Microsoft – Filtro Avanzado
  • Regex101
  • Regular-Expressions.info
  • [automatic_youtube_gallery type=»search» search=»Regex para extraer cadenas en Excel (una o todas las coincidencias)» limit=»1″]
    Parece que ⁤has​ compartido ⁣un texto bastante extenso que describe cómo utilizar expresiones regulares (regex) para extraer patrones de texto en Excel. Me gustaría resumir y desglosar ⁢lo más destacado de la información⁣ proporcionada para que ​sea más fácil de entender.

    Resumen sobre el uso de Regex en Excel:

    1. Uso de RegExpExtract:

    ⁤ – Se menciona que puedes usar⁢ RegExpExtract para‍ extraer ciertos patrones‌ de​ texto‍ de una celda.

    – ⁤Por ejemplo, para extraer ⁣el tiempo en formato hh:mm o hh:mm:ss, se usa una ‍expresión regular específica.

    1. Expresiones‍ Regulares:

    Patrón para hora:

    ⁣ – /b(0?[0-9]|1[0-2]):[0-5]d(:[0-5]d)?s?(AM|PM)b|b([0-9]|[0-1]d|2[0-3]):[0-5]d(:[0-5]d)?(?!:)/

    Desglose:

    ​ – Se‍ divide⁢ en dos partes:

    – La primera parte busca⁤ horas ⁢en formato AM/PM (0-12 horas).

    ‌ – La‍ segunda parte busca horas en formato de 24 horas (0-23).

    1. Funciones ‌y Herramientas:

    ⁢ – Para usar funciones personalizadas, debes ⁢tener instalada la Ultimate Suite de ‌Ablebits.

    ‌ – La⁢ función AblebitsRegexExtract(referencia, expresión_regular) ​se utiliza para ‌extraer coincidencias ⁣basadas en un ​patrón regex.

    1. Ejemplos de Regex:

    – ⁢Para extraer texto⁣ entre dos caracteres, se usan patrones como ⁤ [(.?)] ⁢para capturar texto entre ⁣corchetes.

    ⁢ – Para⁢ extraer nombres de ‌dominio de una URL, se pueden usar expresiones regex específicas para incluir o excluir subdominios.

    1. Como realizar la extracción:

    ⁤ ⁤ – Seleccionas datos⁢ de origen y ⁣luego aplicas el patrón regex correspondiente mediante⁣ la herramienta de expresiones regulares⁣ que proporciona la⁤ Suite.

    – Los resultados⁤ se⁣ presentan en una nueva columna.

    1. Consideraciones:

    – Las funciones de regex pueden no estar disponibles en todas las versiones de Excel.

    – Hay limitaciones en cuanto a la‍ cantidad de​ coincidencias que se pueden extraer, y algunas ‍funciones no capturan​ grupos.

    Ejemplo de uso:

    Para ​extraer el‌ tiempo:

    excel

    =RegExpExtract(A5, "expresión regular para tiempo", 1, FALSE)

    Para extraer texto entre corchetes:

    excel

    =AblebitsRegexExtract(A5, "[(.
    ?)]")

    Conclusión:

    El⁢ uso de expresiones regulares en Excel ​facilita la manipulación y extracción ⁣de datos de texto complejos. Sin embargo, es importante considerar el entorno en que se implementan (como Ultimate Suite) y qué funciones estarán disponibles.

    Si tienes alguna pregunta específica o necesitas aclaraciones sobre algún aspecto en particular, házmelo saber. Estoy aquí para ayudarte.

    Deja un comentario