Regex 正则表达式删除尖括号后的文本
我正在尝试编写一个正则表达式,它将从电子邮件“from”标题中提取名称。我有一个适用于大多数电子邮件客户端的正则表达式,但我注意到另一个电子邮件客户端发送的头稍有不同,因此破坏了正则表达式。我最初的想法是提取双引号或单引号中的所有内容,但这不再有效,因为它不必被引用 我使用正则表达式Regex 正则表达式删除尖括号后的文本,regex,Regex,我正在尝试编写一个正则表达式,它将从电子邮件“from”标题中提取名称。我有一个适用于大多数电子邮件客户端的正则表达式,但我注意到另一个电子邮件客户端发送的头稍有不同,因此破坏了正则表达式。我最初的想法是提取双引号或单引号中的所有内容,但这不再有效,因为它不必被引用 我使用正则表达式([“”])(?:(?=(\\?)\2.*?\1提取引号之间的文本。然而,现在我认为最好的做法是删除尖括号内的文本,只留下没有引号的“测试人员”,最好不要在逗号后出现第二次,尽管这不是必要的 下面是我试图从中提取名称
([“”])(?:(?=(\\?)\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>
测试人员,测试人员
“测试人员”、“测试人员”
我试着用这个,但我似乎不知道如何告诉它如何只捕捉到字符串的前半部分,直到尖括号
(?!([^])。
您可以使用正向前瞻,在(['“]?)([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);