Regex 正则表达式删除尖括号后的文本

Regex 正则表达式删除尖括号后的文本,regex,Regex,我正在尝试编写一个正则表达式,它将从电子邮件“from”标题中提取名称。我有一个适用于大多数电子邮件客户端的正则表达式,但我注意到另一个电子邮件客户端发送的头稍有不同,因此破坏了正则表达式。我最初的想法是提取双引号或单引号中的所有内容,但这不再有效,因为它不必被引用 我使用正则表达式([“”])(?:(?=(\\?)\2.*?\1提取引号之间的文本。然而,现在我认为最好的做法是删除尖括号内的文本,只留下没有引号的“测试人员”,最好不要在逗号后出现第二次,尽管这不是必要的 下面是我试图从中提取名称

我正在尝试编写一个正则表达式,它将从电子邮件“from”标题中提取名称。我有一个适用于大多数电子邮件客户端的正则表达式,但我注意到另一个电子邮件客户端发送的头稍有不同,因此破坏了正则表达式。我最初的想法是提取双引号或单引号中的所有内容,但这不再有效,因为它不必被引用

我使用正则表达式
([“”])(?:(?=(\\?)\2.*?\1
提取引号之间的文本。然而,现在我认为最好的做法是删除尖括号内的文本,只留下没有引号的“测试人员”,最好不要在逗号后出现第二次,尽管这不是必要的

下面是我试图从中提取名称的两个字符串:

Testing Person <testing.person@example.com>,Testing Person <testing.person@example.com>
"Testing Person" <testing.person@example.com>,"Testing Person" <testing.person@example.com>
测试人员,测试人员
“测试人员”、“测试人员”

我试着用这个,但我似乎不知道如何告诉它如何只捕捉到字符串的前半部分,直到尖括号
(?!([^])。

您可以使用正向前瞻,在之前取名称。e、 g.q(?=u)表示匹配q,后面跟一个u。下面的例子,以前面的所有名字为例,在我看来,如果可能的话,使用捕获组比环顾更简单。您可以使用以下模式:
(['“]?)([A-Za-z]+)\1

只需替换为
\2

什么是
[^]
string pattern = @"([\w]+[\w\s]*)(?=[\'""\s]*<{1})";
var matches = Regex.Matches(
                  "Testing Person <testing.person@example.com>,
                  Testing Person <testing.person@example.com>, 
                  \"Testing Person\" <testing.person@example.com>,
                  'Testing Person' <testing.person@example.com>", 
                  pattern);