Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 提取特定电子邮件地址_C#_Regex - Fatal编程技术网

C# 提取特定电子邮件地址

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

我试图从数据的“发件人”部分提取一个电子邮件地址,并且画了一个空白,是否应该使用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>[^\]]+)

(?您可以使用非正则表达式方法:

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);