Introducción a C#
Por Nacho Cabanes, versión 0.93 de 16-abr-2010


(Nota: Estás viendo una versión del curso antigua, creada en 2009. Es recomendable que sigas la versión 2015, mucho más actualizada, con contenidos más detallados, más ejemplos y más ejercicios propuestos)

9.6. Introducción a las expresiones regulares

Las "expresiones regulares" permiten hacer comparaciones mucho más abstractas que si se usa un simple "IndexOf". Por ejemplo, podemos comprobar con una orden breve si todos los caracteres de una cadena son numéricos, o si empieza por mayúscula y el resto son minúsculas, etc.

Vamos a ver solamente un ejemplo con un caso habitual: comprobar si una cadena es numérica, alfabética o alfanumérica:

using System;
using System.Text.RegularExpressions;
 
class PruebaExprRegulares
{
    public static bool EsNumeroEntero(String cadena)
    {
        Regex patronNumerico = new Regex("[^0-9]");
        return !patronNumerico.IsMatch(cadena);
    }
 
    public static bool EsAlfabetico(String cadena)
    {
        Regex patronAlfabetico = new Regex("[^a-zA-Z]");
        return !patronAlfabetico.IsMatch(cadena);
    }
 
    public static bool EsAlfanumerico(String cadena)
    {
        Regex patronAlfanumerico = new Regex("[^a-zA-Z0-9]");
        return !patronAlfanumerico.IsMatch(cadena);
    }
 
 
 
    static void Main(string[] args)
    {
        if (EsNumeroEntero("hola"))
            Console.WriteLine("hola es número entero");
        else
            Console.WriteLine("hola NO es número entero");
 
        if (EsNumeroEntero("1942"))
            Console.WriteLine("1942 es un número entero");
        else
            Console.WriteLine("1942 NO es un número entero");
 
        if (EsAlfabetico("hola"))
            Console.WriteLine("hola es alfabetico");
        else
            Console.WriteLine("hola NO es alfabetico");
 
        if (EsAlfanumerico("hola"))
            Console.WriteLine("hola es alfanumerico");
        else
            Console.WriteLine("hola NO es alfanumerico");
    }
}
 

Su salida es:

hola NO es número entero
1942 es un número entero
hola es alfabetico
hola es alfanumerico

Las expresiones regulares son algo complejo. Por una parte, su sintaxis puede llegar a ser difícil de seguir. Por otra parte, el manejo en C# no se limita a buscar, sino que también permite otras operaciones, como reemplazar unas expresiones por otras. Como ver muchos más detalles podría hacer el texto demasiado extenso, puede ser recomendable ampliar información usando la página web de MSDN (Microsoft Developer Network):

http://msdn.microsoft.com/es-es/library/system.text.regularexpressions.regex(VS.80).aspx