C# 提取特定电子邮件地址
我试图从数据的“发件人”部分提取一个电子邮件地址,并且画了一个空白,是否应该使用Regex 例子:C# 提取特定电子邮件地址,c#,regex,C#,Regex,我试图从数据的“发件人”部分提取一个电子邮件地址,并且画了一个空白,是否应该使用Regex 例子: From:RP[mailto:demo@gmail.com] 日期:2016年6月23日星期四下午2:21 主题:测试 收件人:RP 最终结果将返回demo@gmail.com而非demo1@gmail.com如果使用regex,请使用look-behind并定义它后面应该隐藏的内容,以便只从电子邮件地址获取 (?<=From:[^\[]+\[mailto:\s)(?<Email&g
From:RP[mailto:demo@gmail.com]
日期:2016年6月23日星期四下午2:21
主题:测试
收件人:RP
最终结果将返回
demo@gmail.com
而非demo1@gmail.com
如果使用regex,请使用look-behind并定义它后面应该隐藏的内容,以便只从电子邮件地址获取
(?<=From:[^\[]+\[mailto:\s)(?<Email>[^\]]+)
(?您可以使用非正则表达式方法:
var s = @"From: RP [mailto: demo@gmail.com]
Date: Thu, Jun 23, 2016 at 2:21 PM
Subject: testing
To: RP <demo1@gmail.com>";
var res = s.Split('\n') // Split with newlines
.Where(l => l.StartsWith("From:")) // If a line starts with `From:`
.Select(m => m.Split().LastOrDefault().TrimEnd(']')) // Split with spaces, get the last chunk and trim from ]
.FirstOrDefault(); // Get the first (if there is one only one) result
Console.WriteLine(res);
看到这个了吗
图案说明:
\[
-文字[
mailto:
-文本字符串mailto:
\s*
-零个或多个空格
(.*)
-组1匹配第一个字符之前的任何字符
]
-关闭]
欢迎来到这里,如果您告诉我们您尝试实现这一目标的原因以及失败的原因,会更好。请回答您的问题:)好吧,如果您使用的是C#编程环境,您不需要正则表达式,只需通过拆分、修剪和LINQ即可。如果您只能使用正则表达式,请告诉我们原因。请分享您试图帮助我们的内容。谢谢。它起作用了
var data = @"From: RP [mailto: demo@gmail.com]
Date: Thu, Jun 23, 2016 at 2:21 PM
Subject: testing
To: RP <demo1@gmail.com>";
var pattern = @"(?<=From:[^\[]+\[mailto:\s)(?<Email>[^\]]+)";
Console.WriteLine(Regex.Match(data, pattern).Groups["Email"].Value); // demo@gmail.com
var s = @"From: RP [mailto: demo@gmail.com]
Date: Thu, Jun 23, 2016 at 2:21 PM
Subject: testing
To: RP <demo1@gmail.com>";
var res = s.Split('\n') // Split with newlines
.Where(l => l.StartsWith("From:")) // If a line starts with `From:`
.Select(m => m.Split().LastOrDefault().TrimEnd(']')) // Split with spaces, get the last chunk and trim from ]
.FirstOrDefault(); // Get the first (if there is one only one) result
Console.WriteLine(res);
Console.WriteLine(Regex.Match(s, @"\[mailto:\s*(.*?)]").Groups[1].Value);