🧲Regex

Las expresiones regulares son una herramienta poderosa para la búsqueda y manipulación de cadenas, permitiendo definir patrones para realizar operaciones complejas de forma concisa y eficiente.

1. Literales

Un literal es una coincidencia exacta de un texto específico. Por ejemplo, si quieres encontrar la palabra "casa" en una cadena, usarías "casa" como tu expresión regular

using System.Text.RegularExpressions;

string texto = "La casa es grande.";
Match match = Regex.Match(texto, "casa");
if (match.Success) {
    Console.WriteLine($"Se encontró: {match.Value}");
}

2. Caracteres Especiales

Algunos caracteres tienen significados especiales en las expresiones regulares. Aquí hay algunos ejemplos :

  • . (punto): Coincide con cualquier carácter excepto una nueva línea.

    Ejemplo: a.b puede coincidir con "acb", "a b", pero no con "a\nb".

Match match = Regex.Match("acb", "a.b");
// Coincide con "acb"
  • \d: Coincide con cualquier dígito numérico (0-9).

    Ejemplo: \d\d coincide con cualquier secuencia de dos dígitos, como "12".

  • \w: Coincide con cualquier carácter alfanumérico (letras, dígitos) o guion bajo (_).

    Ejemplo: \w\w puede coincidir con "ab", "1a", o "a_".

  • \s: Coincide con cualquier espacio en blanco (espacio, tabulación, nueva línea).

    Ejemplo: a\sb coincide con "a b".

3. Cuantificadores

Permiten especificar cuántas veces quieres que aparezca un elemento:

  • * (cero o más veces)

    Ejemplo: a*b puede coincidir con "b", "ab", "aab", "aaab", etc.

  • + (una o más veces)

    Ejemplo: a+b coincide con "ab", "aab", "aaab", pero no con "b".

  • ? (cero o una vez)

    Ejemplo: a?b puede coincidir con "b" o "ab".

  • {n} (n veces exactas)

    Ejemplo: a{2}b coincide con "aab".

Por supuesto, vamos a profundizar en cada uno de los conceptos básicos de regex con ejemplos más detallados y cómo aplicarlos en C#.

1. Literales

Un literal es una coincidencia exacta de un texto específico. Por ejemplo, si quieres encontrar la palabra "casa" en una cadena, usarías "casa" como tu expresión regular.

Ejemplo en C#:

2. Caracteres Especiales

Algunos caracteres tienen significados especiales en las expresiones regulares. Aquí hay algunos ejemplos comunes:

  • . (punto): Coincide con cualquier carácter excepto una nueva línea.

    Ejemplo: a.b puede coincidir con "acb", "a b", pero no con "a\nb".

  • \d: Coincide con cualquier dígito numérico (0-9).

    Ejemplo: \d\d coincide con cualquier secuencia de dos dígitos, como "12".

  • \w: Coincide con cualquier carácter alfanumérico (letras, dígitos) o guion bajo (_).

    Ejemplo: \w\w puede coincidir con "ab", "1a", o "a_".

  • \s: Coincide con cualquier espacio en blanco (espacio, tabulación, nueva línea).

    Ejemplo: a\sb coincide con "a b".

3. Cuantificadores

Permiten especificar cuántas veces quieres que aparezca un elemento:

  • * (cero o más veces)

    Ejemplo: a*b puede coincidir con "b", "ab", "aab", "aaab", etc.

  • + (una o más veces)

    Ejemplo: a+b coincide con "ab", "aab", "aaab", pero no con "b".

  • ? (cero o una vez)

    Ejemplo: a?b puede coincidir con "b" o "ab".

  • {n} (n veces exactas)

    Ejemplo: a{2}b coincide con "aab".

4. Clases de Caracteres

Permiten definir un conjunto de caracteres que pueden coincidir.

  • [abc]: Coincide con 'a', 'b', o 'c'.

    Ejemplo: a[bc]d puede coincidir con "abd" o "acd".

5. Anclas

Especifica una posición en el texto en lugar de un carácter.

  • ^ (inicio de la cadena): ^a coincide con "a" al principio de la cadena.

  • $ (final de la cadena): a$ coincide con "a" al final de la cadena.

Puedes usar expresiones regulares en C# sin necesariamente trabajar con la clase Match si tu objetivo es simplemente verificar si hay una coincidencia. En lugar de Match, puedes usar el método Regex.IsMatch, que devuelve un valor booleano (true o false) indicando si el patrón de expresión regular se encuentra dentro de la cadena dada.

6.Clases de Caracteres Personalizadas

Las clases de caracteres personalizadas te permiten definir un conjunto específico de caracteres que desees que coincidan en tu expresión regular. Las defines usando corchetes [], y puedes incluir rangos de caracteres.

  • [a-zA-Z]: Coincide con cualquier letra mayúscula o minúscula. Aquí, a-z abarca todas las letras minúsculas y A-Z todas las mayúsculas.

  • [abc]: Coincide con 'a', 'b', o 'c'. Es un ejemplo de una clase de caracteres que no usa rangos.

Si quieres que coincida un patrón específico de caracteres de esta clase un número determinado de veces, puedes usar cuantificadores.

  • [a-zA-Z]{2}: Coincide con cualquier dos letras seguidas, ya sean mayúsculas o minúsculas.

Aquí tienes un ejemplo en C# utilizando una clase de caracteres personalizada:

Última actualización