VBA Regex

Tabla de contenido

Este tutorial demostrará cómo usar Regex en VBA.

¿Qué es Regex?

Regex significa expresión regular. Una expresión regular es un patrón compuesto por una secuencia de caracteres que puede usar para encontrar un patrón coincidente en otra cadena. Para usar Regex en VBA, debe usar el objeto RegExp.

Se puede usar un patrón como [A-C] para buscar y hacer coincidir una letra mayúscula de la A a la C de una secuencia. Los patrones de expresiones regulares tienen su propia sintaxis y se pueden construir utilizando un carácter o una secuencia de caracteres.

Personajes a juego

La siguiente tabla muestra la sintaxis que le permitirá crear patrones Regex.

Sintaxis del patrón Descripción Ejemplo Unas parejas encontradas
. Coincide con cualquier carácter individual excepto vbNewLine f.n ventilador, fon, f @ n, fwn
[caracteres] Coincide con cualquier carácter individual entre corchetes [] [fn] Solo coincidiría con "f" o "n" en fan
[personajes] Coincide con cualquier carácter que no esté entre corchetes [] [fn] Entonces coincidiría con "j" en "fjn"
[inicio fin] Coincide con cualquier carácter que forme parte del rango entre corchetes [] [1-5] Coincidiría con "4" y "5" en "45"
\ w Coincide con los caracteres alfanuméricos y el guión bajo, pero no el espacio \ w Coincidiría con "c" en ", c".
\ W Coincide con cualquier carácter no alfanumérico y el guión bajo \ W Coincidiría con "@" en "bb @ bb"
\s Coincide con cualquier carácter de espacio en blanco, como espacios y tabulaciones \s Coincidiría con "" en "Esto es"
\S Coincide con cualquier carácter de espacio en blanco \S Coincidiría con "T" y "h" en "T h"
\D Coincide con cualquier dígito decimal \D Coincidiría con "7" en "a7h"
\D Coincide con cualquier dígito no decimal \D Coincidiría con j en "47j"
\ Escapa de caracteres especiales que luego le permite buscarlos. \. Coincidiría con "." en "59.pQ"
\ t Pestaña \ t Coincidiría con un carácter de tabulación
\ r Retorno de carro \ r Coincidiría con un retorno de carro (vbCr)
\norte vbNewLine (vbTab) \norte Coincidiría con una nueva línea

Cuantificadores

Puede utilizar cuantificadores para especificar cuántas veces desea que el patrón coincida con la cadena.

Cuantificador Descripción Ejemplo Unas parejas encontradas
* Coincide con cero o más ocurrencias fn * a fna, fa, fnna, fnnna, fnfnnna
+ Coincide con una o más ocurrencias fn + a fna, fnna, fnfnna
? Coincide con cero o uno fn? a fa, fna
{norte} Coincide con "n" muchas veces d \ W {4} Coincidiría con "d …" en "d…. & 5hi"
{norte,} Coincide al menos "n" veces d \ W {4,} Coincidiría con "d …. &" En "d …. & 5hi"
{Nuevo Méjico} Coincide con n y m número de veces d \ W {1,8} Coincidiría con "d…. &&&&" en "d…. &&&& 5hi"

Agrupamiento

Agrupar o capturar le permite usar un patrón para capturar y extraer una porción de una cadena. Por lo tanto, no solo se hace coincidir el patrón, sino que se captura la parte de la cadena que coincide con el patrón.

Patrón Descripción Ejemplo Coincidencias encontradas y capturadas
(expresión) Agrupa y captura el patrón entre paréntesis (\ W {4}) Agruparía y capturaría "@@@@" de "1 @@@@ 1jlmba"

Cómo usar Regex en VBA

Para usar Regex en VBA, primero debe establecer la referencia en el editor de VBE. En el editor de VBE, vaya a Herramientas> Referencias> Expresiones regulares de Microsoft VBScript.

Estas son las propiedades del objeto RegExp:

  • Patrón - El patrón que va a utilizar para hacer coincidir con la cuerda.
  • Ignorar caso - Si es Verdadero, la coincidencia ignora las mayúsculas y minúsculas.
  • Global - Si es Verdadero, entonces se encuentran todas las coincidencias del patrón en la cadena. Si es False, solo se encuentra la primera coincidencia.
  • MultiLine - Si es Verdadero, la coincidencia de patrones ocurre en los saltos de línea.

Estos son los métodos del objeto RegExp:

  • Prueba - Busca un patrón en una cadena y devuelve True si se encuentra una coincidencia.
  • Reemplazar - Reemplaza las ocurrencias del patrón con la cadena de reemplazo.
  • Ejecutar - Devuelve coincidencias del patrón con la cadena.

Prueba de un patrón para una coincidencia con una cadena

Puede utilizar el método de prueba para comprobar si un patrón coincide con una secuencia en la cadena de entrada. El resultado es Verdadero si se encuentra una coincidencia. El siguiente código le mostrará cómo probar un patrón contra una cadena:

12345678910111213 Sub RegexTestingAPattern ()Dim stringOne como cadenaDim regexOne como objetoEstablecer regexOne = New RegExpregexOne.Pattern = "f… .a"stringOne = "000111fjo88a8"Debug.Print regexOne.Test (stringOne)End Sub

El resultado es:

Reemplazo de un patrón en una cadena

Puede utilizar el método Reemplazar para reemplazar la primera instancia de un patrón coincidente en una cadena o todas las instancias de un patrón coincidente en una cadena. Si Global se establece en False, solo se reemplaza la primera instancia. El siguiente código le mostrará cómo reemplazar un patrón en una cadena:

1234567891011 Sub RegexReplacingAPattern ()Dim stringOne como cadenaDim regexOne como objetoEstablecer regexOne = New RegExpregexOne.Pattern = "Este es el número"regexOne.Global = FalsestringOne = "Este es el número 718901"Debug.Print regexOne.Replace (stringOne, "Ese es el nuevo número")End Sub

El resultado es:

Para reemplazar solo la parte numérica de la cadena utilizada anteriormente, usaría el siguiente código:

1234567891011 Sub RegexReplacingAPattern ()Dim stringOne como cadenaDim regexOne como objetoEstablecer regexOne = New RegExpregexOne.Pattern = "[\ D] +"regexOne.Global = FalsestringOne = "Este es el número 718901"Debug.Print regexOne.Replace (stringOne, "777192")End Sub

El resultado es:

Para reemplazar cada instancia de un patrón determinado en una cadena, debe establecer el valor global en Verdadero. El siguiente código le muestra cómo reemplazar cada instancia de -A1289C- en la cadena:

1234567891011 Sub RegexReplacingEveryInstanceOfAPattern ()Dim stringOne como cadenaDim regexOne como objetoEstablecer regexOne = New RegExpregexOne.Pattern = "\ W \ A \ d + C \ W"regexOne.Global = TruestringOne = "ABC-A1289C-ABC-A1289C-ABC"Debug.Print regexOne.Replace (stringOne, "IJK")End Sub

Hacer coincidir y mostrar un patrón en una cadena

Puede utilizar el método Execute para hacer coincidir una o todas las instancias de un patrón dentro de una cadena. El siguiente código le muestra cómo hacer coincidir y mostrar todas las instancias del patrón de la cadena:

123456789101112131415161718 Sub RegexMatchingAndDisplayingAPattern ()Dim stringOne como cadenaDim regexOne como objetoEstablecer regexOne = New RegExpregexOne.Pattern = "A.C"regexOne.Global = TrueregexOne.IgnoreCase = IgnoreCasestringOne = "ABC-A1289C-ADC-A1289C-AJC"Establecer theMatches = regexOne.Execute (stringOne)Para cada partido en los partidosDebug.Print Match.ValuepróximoEnd Sub

El resultado es:

Supongamos que solo queremos hacer coincidir -ADC- de la cadena anterior. El siguiente código muestra cómo hacer coincidir y mostrar solo -ADC- de la cadena:

123456789101112131415161718 Sub RegexMatchingAndDisplayingAPattern ()Dim stringOne como cadenaDim regexOne como objetoEstablecer regexOne = New RegExpregexOne.Pattern = "\ - \ A.C \ -"regexOne.Global = FalseregexOne.IgnoreCase = IgnoreCasestringOne = "ABC-A1289C-ADC-A1289C-AEC"Establecer theMatches = regexOne.Execute (stringOne)Para cada partido en los partidosDebug.Print Match.ValuepróximoEnd Sub

Regex puede tomar algo de tiempo para aprender, pero es una herramienta extremadamente poderosa para identificar / manipular cadenas de texto. También se usa ampliamente en todos los lenguajes de programación.

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave