2010-08-08 10 views
8

? Ha surgido una nueva pregunta en relación con earlier question of mine. Tengo un código que usa una expresión regular para encontrar direcciones de correo electrónico. Funciona muy bien, excepto que devuelve coincidencias duplicadas. Busqué en este sitio y encontré una pregunta de hace mucho tiempo que estaba tratando con un problema similar, y la respuesta tenía algo que ver con mezclar la lógica regex con una cadena [] y el método Distinct(). Desafortunadamente, mi comprensión de las matrices sigue siendo limitada.¿Cuál es la forma preferida de filtrar una búsqueda de expresiones regulares para coincidencias duplicadas en C#

Mi código está colocando todas las coincidencias de expresiones regulares en MatchCollection. Aparte de eso, ¿cómo hago para interactuar con este MatchCollection para agregar solo coincidencias únicas a la expresión regular?

Respuesta

11

Puede hacerlo utilizando Distinct en .NET 3.5 o posterior si se llama Cast en su colección de partido para que pueda utilizar los métodos de extensión de LINQ:

MatchCollection matchCollection = Regex.Matches(input, pattern); 
List<string> matches = matchCollection 
    .Cast<Match>() 
    .Select(m => m.Value) 
    .Distinct() 
    .ToList(); 

Esto supone que tiene los siguientes usings en la parte superior de su archivo:

using System.Linq; 
using System.Collections.Generic; 
+0

Funciona como un encanto. Gracias un montón. – Stev0

Cuestiones relacionadas