简体   繁体   English

C#使用正则表达式从电子邮件标题中提取

[英]C# Extracting from an Email header using a Regex

So im trying to extract different parts from an email header in C#. 所以我试图从C#中的电子邮件标题中提取不同的部分。 I think im just hopeless with Regex. 我认为对Regex只是没有希望。

I have the following: 我有以下内容:

[["X-Mailgun-Incoming", "Yes"], ["X-Envelope-From", "<dwdwdw@dwdwdw.com>"],["Thread-Topic", "What is status"]]

Using a regex I want say the Thread-Topic 使用正则表达式,我想说线程主题

I am trying: 我在尝试:

[\\"(Thread)\\-(Topic)\\", (\\")?:[AZ][az][az]+(\\")]

Ideally Id like to just change the words to extract some of the other parameters 理想情况下,Id只想更改单词以提取其他一些参数

Assuming you get raw string 假设您得到了原始字符串

var str = "[[\"X-Mailgun-Incoming\",\"Yes\"],[\"X-Envelope-From\",\"<dwdwdw@dwdwdw.com>\"],[\"Thread-Topic\",\"What is status\"]]";
var arr = str.Split(new string[] { "],[", "[[", "]]" }, StringSplitOptions.RemoveEmptyEntries);
var kpv = arr.Select(x => x.Split(new char[] { ',', '"' }, StringSplitOptions.RemoveEmptyEntries)).ToArray();

If regex i would do something like: 如果正则表达式,我会做类似的事情:

[TestMethod]
public void ParseHeadersToDictionary_MultipleHeaders_HeadersAreParsed()
{
    var emailHeaders = "[[\"X-Mailgun-Incoming\",\"Yes\"],[\"X-Envelope-From\",\"<dwdwdw@dwdwdw.com>\"],[\"Thread-Topic\",\"What is status\"]]";

    var regex = new Regex(@"\[""(?<key>.*?)"",\s?""(?<value>.*?)""]");
    Dictionary<string,string> headers = regex.Matches(emailHeaders).Cast<Match>().ToDictionary(item => item.Groups["key"].Value, item => item.Groups["value"].Value);

    var result = headers["Thread-Topic"];

    Assert.AreEqual("What is status", result);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM