extracto de toda la dirección de correo electrónico de un texto usando c#

Hay una manera de extraer todas las direcciones de correo electrónico de texto sin formato, utilizando C# .

Por ejemplo

mi dirección de correo electrónico es [email protected] y su correo electrónico es [email protected]

debe devolver

[email protected], [email protected]

He probado los siguientes, pero coincide con perfecta sólo correos.

 public const string MatchEmailPattern =
            @"^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@"
            + @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\."
              + @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
            + @"([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})$";


        public static bool IsEmail(string email)
        {
            if (email != null) return Regex.IsMatch(email, MatchEmailPattern);
            else return false;
        }
  • Quite el ^ desde el inicio de la expresión regular y el $ de la final. Hay un propósito distinto de spam para esta actividad?
  • no es por hacer spam pero para el rastreo web de la dirección de manera que un contacto de la base de datos puede hacerse ! la eliminación ^ y $ funciona, pero había que añadir algunos ajustes para extraer los correos electrónicos de la misma .He publicado la respuesta y por el presente .
  • pruebe este stackoverflow.com/a/26274085/1604425 mucho mejor que el complejo regx
InformationsquelleAutor Thunder | 2010-02-25

5 Kommentare

  1. 65

    comprobar este fragmento de

    using System.IO;
    using System.Text.RegularExpressions;
    using System.Text;
    
    class MailExtracter
    {
    
        public static void ExtractEmails(string inFilePath, string outFilePath)
        {
            string data = File.ReadAllText(inFilePath); //read File 
            //instantiate with this pattern 
            Regex emailRegex = new Regex(@"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*",
                RegexOptions.IgnoreCase);
            //find items that matches with our pattern
            MatchCollection emailMatches = emailRegex.Matches(data);
    
            StringBuilder sb = new StringBuilder();
    
            foreach (Match emailMatch in emailMatches)
            {
                sb.AppendLine(emailMatch.Value);
            }
            //store to file
            File.WriteAllText(outFilePath, sb.ToString());
        }
    }
  2. 21

    Siguientes obras

    public static void emas(string text)
            {
                const string MatchEmailPattern =
               @"(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@"
               + @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\."
                 + @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
               + @"([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})";
                Regex rx = new Regex(MatchEmailPattern,  RegexOptions.Compiled | RegexOptions.IgnoreCase);
                //Find matches.
                MatchCollection matches = rx.Matches(text);
                //Report the number of matches found.
                int noOfMatches = matches.Count;
                //Report on each match.
                foreach (Match match in matches)
                {
                    Console.WriteLine(match.Value.ToString());
                }
            }
  3. 6

    Acaba de quitar el «^» desde el principio, y el «$» desde el final de su cadena de filtro.

    • la eliminación ^ y $ funciona, pero había que añadir algunos ajustes para extraer los correos electrónicos de la misma .He publicado la respuesta aquí
  4. 3

    dar a este un intento http://www.regular-expressions.info/email.html

    • La sección «en La Norma Oficial: RFC 2822» es especialmente importante si usted realmente desea entender lo que usted está consiguiendo en con tratando de encontrar direcciones de correo electrónico válidas.
    • Que se Rfc de correo electrónico: RFC 1035 , RFC 5322 y RFC 2822 ?
    • Gracias, muy útil el artículo, que se sumerge profundamente en la coincidencia de patrón; explicar claramente cada sección
  5. 0

    Si no quieres que sea perfecto para que coincida con las direcciones de correo electrónico, no utilizar una expresión regular que coincide con perfecta direcciones de correo electrónico.

    La expresión regular que usted está usando sólo coincidirá con el inicio de la línea (^) y el final de la línea ($), así que si usted eliminar aquellos que no filtro con ellos.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea