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