[正则表达式]电子邮件中的发件人字段

电子邮件中的发件人字段一般有以下几种形式:  
  1、"sender   name"   <sender@domain.com>  
  2、sender   name   <sender@domain.com>  
  3、sender@domain.com  
  我想匹配得到两样东西:  
  将前面的sender   name存入<fromname>,并且要去掉双引号,如果没有就返回空字符串;  
  将后面的邮件地址存入<from>,并且要去掉尖括号,如果没有就返回空字符串。  


 1 try   
 2     
 3     
 4   using   System;   
 5   using   System.Text.RegularExpressions;   
 6     
 7     
 8   string[]   slist   =   {"\"sender   name\"   <sender@domain.com>",   
 9       "sender   name   <sender@domain.com>",   
10       "sender@domain.com"   
11     };   
12     
13   Regex   r   =   new   Regex(@"""?(?<fromname>.*?)""?\s*[<]?(?<from>[^@\s]+\@[^@\s>]+)[>]?$");   
14     
15   foreach   (string   s   in   slist)   
16   {   
17   Match   m   =   r.Match(s);   
18   Console.WriteLine("{0}   matches?   {1}",   s,   m.Success);   
19   if   (m.Success)   
20   {   
21   Console.WriteLine("\tsender:***{0}***\temail:***{1}***",   m.Groups["fromname"].Value,     
22     
23   m.Groups["from"].Value);   
24   }   
25   }   
26 


 1 try
 2 
 3 
 4 using System;
 5 using System.Text.RegularExpressions;
 6 
 7 
 8     string[] slist = {"\"sender name\" <sender@domain.com>",
 9             "sender name <sender@domain.com>",
10             "sender@domain.com"
11             };
12 
13     Regex r = new Regex(@"""?(?<fromname>.*?)""?\s*[<]?(?<from>[^@\s]+\@[^@\s>]+)[>]?$");
14 
15     foreach (string s in slist)
16     {
17         Match m = r.Match(s);
18         Console.WriteLine("{0} matches? {1}", s, m.Success);
19         if (m.Success)
20         {
21             Console.WriteLine("\tsender:***{0}***\temail:***{1}***", m.Groups["fromname"].Value,
22 
23 m.Groups["from"].Value);
24         }
25     }
26 
27 
原文地址:https://www.cnblogs.com/chengulv/p/751312.html