Análisis de expresiones regulares

Análisis de expresiones regulares

# Coincidencia única

using System.Text.RegularExpressions;

string pattern = ":(.*?):";
string lookup = "--:text in here:--";

// Instanciate your regex object and pass a pattern to it
Regex rgxLookup = new Regex(pattern, RegexOptions.Singleline, TimeSpan.FromSeconds(1));
// Get the match from your regex-object
Match mLookup = rgxLookup.Match(lookup);

// The group-index 0 always covers the full pattern.
// Matches inside parentheses will be accessed through the index 1 and above.
string found = mLookup.Groups[1].Value;

Resultado:

found = "text in here"

# Múltiples coincidencias

using System.Text.RegularExpressions;

List<string> found = new List<string>();
string pattern = ":(.*?):";
string lookup = "--:text in here:--:another one:-:third one:---!123:fourth:";

// Instanciate your regex object and pass a pattern to it
Regex rgxLookup = new Regex(pattern, RegexOptions.Singleline, TimeSpan.FromSeconds(1));
MatchCollection mLookup = rgxLookup.Matches(lookup);

foreach(Match match in mLookup)
{
    found.Add(match.Groups[1].Value);
}

Resultado:

found = new List<string>() { "text in here", "another one", "third one", "fourth" }

# Sintaxis

  • new Regex(pattern); //Crea una nueva instancia con un patrón definido.
  • Regex.Match(input); //Inicia la búsqueda y devuelve la coincidencia.
  • Regex.Matches(input); //Inicia la búsqueda y devuelve MatchCollection

# Parámetros

Nombre Detalles
Patrón El string patrón que tiene que ser utilizado para la búsqueda. Para más información:msdn
Opciones Regex [Opcional] Las opciones comunes aquí son Singleline y Multiline . Están cambiando el comportamiento de los elementos de patrón como el punto (.) que no cubrirá un NewLine (\n) en Multiline-Mode pero en SingleLine-Mode . Comportamiento predeterminado:msdn
Tiempo de espera [Opcional] Donde los patrones se vuelven más complejos, la búsqueda puede consumir más tiempo. Este es el tiempo de espera transcurrido para la búsqueda tal como se conoce en la programación de red.

# Comentarios

Uso necesario

using System.Text.RegularExpressions;

Agradable tener

  • Puede probar sus patrones en línea sin necesidad de compilar su solución para obtener resultados aquí:haga clic en mí
  • Ejemplo Regex101:Haz clic en mí

Especialmente los principiantes tienden a exagerar sus tareas con expresiones regulares porque se sienten poderosos y en el lugar correcto para búsquedas más complejas basadas en texto. Este es el punto en el que las personas intentan analizar documentos xml con expresiones regulares sin siquiera preguntarse si podría haber una clase ya terminada para esta tarea como XmlDocument .

La expresión regular debería ser la última arma a elegir contra la complejidad. Al menos no olvides poner un poco de esfuerzo para buscar el right way antes de escribir 20 líneas de patrones.