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

lxcnn(过客) 过来下,这里的正则需要您!

private   static   string[]   GetEmail(string   source)
                {
                        Regex   reg   =   new   Regex(@ "\w+([-+. ']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* ");    
                        MatchCollection   mc   =   reg.Matches(source);
                        string   []   result=new   string   [mc.Count   ];
                        for   (int   i   =   0;   i   <   mc.Count;i++   )
                        {
                                result   [i]=mc[i].Value   ;
                        }
                        return   result;
                }
其中source   是
StreamReader   sr   =   new   StreamReader( "g:/51245.html ",   System.Text.Encoding.Default,   false,   1024);

                        string   souce   =   sr.ReadToEnd   ();

在网页中如果遇到   fsatag@163.com,thanks   用户留言写在一起的   抓取出来是
protoss81@163.com澶氳       地址后面跟些汉字


考虑到结尾,换成这样的正则,结果一个地址都匹配不出来@ "^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$ "

------解决方案--------------------
如果是这样,换成这样试下

Regex reg = new Regex(@ "[a-zA-Z0-9_]+([-+. '][a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+([-.a-zA-Z0-9_]+)*\.[a-zA-Z0-9_]+([-.a-zA-Z0-9_]+)* ");
------解决方案--------------------
太快了