jueves, 26 de septiembre de 2013

[Tip] Extraer cadenas de una cadena principal con expresiones regulares

En muchas ocasiones necesitamos extraer palabras o caracteres que cumplan con ciertas condiciones de una cadena mayor, hay muchas formas de hacerlo unas más laboriosas o menos genéricas que otras, para este tipo de casos nos son muy útiles las expresiones regulares, como en el siguiente ejemplo, se necesita extraer las palabras encerradas en [corchetes] de una cadena, esto lo podemos lograr de la siguiente forma:

Cadena: [EDAD]:25:NUMERICO;[SUELDO]:1200:NUMERICO;[ESTADOCIVIL]:'C':TEXTO

string pattern = Regex.Escape("[") + "(.*?)]";
string input = "[EDAD]:25:NUMERICO;[SUELDO]:1200:NUMERICO;[ESTADOCIVIL]:'C':TEXTO";

MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
     Response.Write(match.Value);

Observemos que con la instrucción Regex.Escape indicamos que no los caracteres especiales no sean tenidos en cuenta como parte de la expresión regular si no como parte del patrón que deseamos buscar.

El resultado que imprime nuestro algoritmo es:

[EDAD][SUELDO][ESTADOCIVIL]

Espero les sea de utilidad.

Saludos!!