Expresiones Regulares (Regex)…

Es común trabajar con expresiones regulares en los casos en que necesitamos saber si una cadena específica de caracteres cumple un patrón específico (lo que sería un expresión) y realizar alguna acción en base a ello.
Si no tienes conocimientos sobre expresiones regulares puedes comenzar aquí.

Un ejemplo en el que utilizaríamos expresiones regulares sería si necesitamos validar que una cadena ingresada por el usuario es un mail válido (cumpliendo con el formato común). También puede utilizarse para reemplazar partes de un texto que cumplen expresiones regulares.

En .Net, contamos con la clase Regex, la cual nos brinda varios métodos para manejar expresiones regulares.

[SerializableAttribute] 
public class Regex : ISerializable

Les muestro dos ejemplos de la utilización de Regex:
1. Validar los mails ingresados:

private const String PATRON_MAIL = @"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$";

private void ValidarMails() {
    String[] mails = new String[3];
    mails[0] = "mimail@mail.com";
    mails[1] = "mimailmail.com";
    mails[2] = "mimail@mailcom";

    Regex reg = new Regex(PATRON_MAIL, RegexOptions.Singleline);

    foreach (String mail in mails) {
        if (reg.IsMatch(mail)) {
            Console.WriteLine("Mail: {0} es válido", mail);
        }
        else {
            Console.WriteLine("Mail: {0} es inválido", mail);
        }
    }
}

si es una llamada simple podemos utilizar el método estático:

Regex.IsMatch(textoAValidar, patron);

Resultado:
Mail: mimail@mail.com es válido
Mail: mimailmail.com es inválido
Mail: mimail@mailcom es inválido

2. Reemplazar una cadena a través de una expresión regular:

private const String PATRON_MAYOR = “[^>]>[^>]”;

private void ReemplazarTexto() {
String textoACambiar = “numero1>numero2>numero3”;

Regex rexMayores = new Regex(PATRON_MAYOR, RegexOptions.Singleline);

String textoNuevo = rexMayores.Replace(textoACambiar,
delegate(Match m) {
return String.Format(“{0}<{1}", m.Value[0], m.Value[2]); } ); Console.WriteLine("Antes {0} ahora {1}", textoACambiar, textoNuevo); } [/sourcecode] Resultado
Antes numero1>numero2>numero3 ahora numero1<numero2<numero3

En el ejemplo hicimos uso de un método anónimo el cual recibe como párametro un objeto Match, este método es el encargado de devolver el texto por el cual se reemplazará la cadena que coincide con la expresión regular. El método anónimo será ejecutado dos veces, una vez por cada fragmento de texto que cumpla con la expresión regular.

Ejemplos y más información sobre expresiones regulares: http://www.regular-expressions.info/.
Más ejemplos en .Net: http://msdn.microsoft.com/es-es/library/kweb790z(VS.80).aspx.
Una herramienta muy útil para crear y probar expresiones regulares es Rad Software Regular Expression Designer: http://www.radsoftware.com.au/regexdesigner/

Anuncios
Publicado en C#. Etiquetas: . Leave a Comment »

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: