Expresiones regulares en C# con ejemplos: en la práctica

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Expresiones regulares en C# con ejemplos: de la teoría a la práctica

\n\n

Las expresiones regulares (regex) son una herramienta poderosa para buscar, extraer y reemplazar texto según un patrón. En C# (.NET), el trabajo con expresiones regulares se implementa a través del espacio de nombres System.Text.RegularExpressions y la clase Regex. En este artículo, analizaremos las principales funcionalidades con ejemplos reales: desde la búsqueda simple hasta la validación de email y teléfono.

\n\n

1. Fundamentos: la clase Regex y sus métodos

\n\n

La clase principal para trabajar es Regex. Proporciona métodos estáticos y de instancia. Estos son los principales:

\n\n
    \n
  • IsMatch — verifica si la cadena contiene una coincidencia con el patrón.
  • \n
  • Match — encuentra la primera coincidencia.
  • \n
  • Matches — encuentra todas las coincidencias.
  • \n
  • Replace — reemplaza las coincidencias con la cadena especificada.
  • \n
  • Split — divide la cadena según el patrón.
  • \n
\n\n

Ejemplo 1. Verificación simple

\n
using System;\nusing System.Text.RegularExpressions;\n\nclass Program\n{\n    static void Main()\n    {\n        string text = "Hola, mi número: 123-456-7890";\n        string pattern = @"\\d{3}-\\d{3}-\\d{4}";\n\n        if (Regex.IsMatch(text, pattern))\n        {\n            Console.WriteLine("¡Número encontrado!");\n        }\n    }\n}\n
\n\n

En este ejemplo, \\d{3} significa «exactamente tres dígitos». La barra invertida se escapa con @ (cadena textual).

\n\n

2. Grupos de captura y extracción de datos

\n\n

Los grupos de captura permiten extraer partes de la coincidencia. Se definen con paréntesis (). Cada grupo recibe un número de orden (comenzando desde 1).

\n\n

Ejemplo 2. Extracción de nombre y dominio de un email

\n
string email = "user@example.com";\nstring pattern = @"^(\\w+)@(\\w+\\.\\w+)$";\n\nMatch match = Regex.Match(email, pattern);\n\nif (match.Success)\n{\n    Console.WriteLine($"Usuario: {match.Groups[1].Value}");   // user\n    Console.WriteLine($"Dominio: {match.Groups[2].Value}");   // example.com\n}\n
\n\n

Aquí, (\\w+) captura uno o más caracteres alfanuméricos. ^ y $ son los anclajes de inicio y fin de cadena.

\n\n

Ejemplo 3. Análisis de URL

\n
string url = "https://pythonlib.ru/page?id=42";\nstring pattern = @"^(https?)://([^/]+)(/.*)?$";\n\nMatch m = Regex.Match(url, pattern);\nif (m.Success)\n{\n    Console.WriteLine($"Protocolo: {m.Groups[1].Value}"); // https\n    Console.WriteLine($"Dominio: {m.Groups[2].Value}");    // pythonlib.ru\n    Console.WriteLine($"Ruta: {m.Groups[3].Value}");     // /page?id=42\n}\n
\n\n

3. Reemplazo y eliminación de texto

\n\n

El método Replace permite reemplazar fragmentos encontrados. Se pueden usar referencias inversas como $1, $2 para insertar grupos.

\n\n

Ejemplo 4. Formateo de número de teléfono

\n
string raw = "89161234567";\nstring pattern = @"(\\d{1})(\\d{3})(\\d{3})(\\d{2})(\\d{2})";\nstring replacement = "+7 ($2) $3-$4-$5";\n\nstring formatted = Regex.Replace(raw, pattern, replacement);\nConsole.WriteLine(formatted); // +7 (916) 123-45-67\n
\n\n

Ejemplo 5. Eliminación de espacios adicionales

\n
string text = "Este    texto   tiene   espacios   adicionales.";\nstring cleaned = Regex.Replace(text, @"\\s+", " ");\nConsole.WriteLine(cleaned); // "Este texto tiene espacios adicionales."\n
\n\n

\\s+ — uno o más caracteres de espacio en blanco. Reemplazamos por un espacio simple.

\n\n

4. Casos reales: validación de email y teléfono

\n\n

En la práctica, las expresiones regulares se usan más a menudo para verificar la entrada del usuario. A continuación, dos ejemplos típicos.

\n\n

Validación de email (simplificada)

\n
public static bool IsValidEmail(string email)\n{\n    if (string.IsNullOrWhiteSpace(email))\n        return false;\                

Blogs

Book Recommendations