日期:2014-05-18  浏览次数:20832 次

大家过来帮帮忙 有过网页抓取邮箱经验 正则厉害的热烈欢迎
最近闲着没事写了个爬虫,title,meta,正文都能用正则比较好的析取
但是在析取邮箱的时候出现不能正确的析取,
正则表达式及详细代码如下:
除了用正则还有其他什么好办法可以提取邮箱吗
C# code

    private static string RegExprEmail = @"(mailto\:|contact\=)?(?<1>[^\@\s]{1,}\@(?:[^\s\.]{1,}\.){1,}(?:[a-z]{2,4}\.?){1,2})";
    private static Regex RegExFindEmail = new Regex(RegExprEmail,RegexOptions.IgnoreCase|RegexOptions.Multiline);
    E_Mail email = new E_Mail();//自己定义的E_Mail类 
       for (Match n = RegExFindEmail.Match(html); n.Success; n = n.NextMatch())
        {
            email.Email = n.Groups["1"].Value.Trim();
            email.Mark = false;
            if (!Email_Exist(email.Email))
            {
                email.Url = father_url.Get_url_link().ToString();
                for (int i = 0; i < Common.KeyWord.Length; i++)
                {
                    if (html.Contains(Common.KeyWord[i]))
                    {
                        email.Mark = true;
                        break;
                    }
                }
                Common.Email_List.Add(email);//这个是一个类public static IList<E_Mail> Email_List=new List<E_Mail>();
        

          }



------解决方案--------------------
因为不知道你具体内容,如果邮箱前后都有固定字符的话,还可以遍历找,比如你先找到 mailto ,然后找@,然后找到结束字符,你就根据这几个位置取内容(substring)