0

美好的一天~我不太擅长这个正则表达式。所以我需要你的帮助,拜托。

条件:用户可以一起输入他们的电子邮件地址和姓名。我想从字符串中提取电子邮件地址和用户名。

string pattern1 = "Peter Jackson<peter@jackson.com>";

从那个字符串我想得到“Peter Jackson”和“<peter@jackson.com>”。

string pattern2 = "Peter Jackson(peter@jackson.com)";

但是,人们总是会犯下面这样的错误。

他们也可以使用“[”代替“<”。所以...

string pattern3 = "Peter Jackson[peter@jackson.com]";

甚至一些愚蠢的用户也可以输入...

string pattern4 = "Peter Jackson{peter@jackson.com}";

所以,我不得不寻找“<”,“(”,“[”和“{”的字符。我试过了

string regularExpressionPattern = @"^(<|(|[|{)(.*?)^(}|]|)|>)";

但我觉得我做错了什么。而且我还尝试认为人们可能会输入更多错误,例如....

string pattern5 = "Peter Jackson<peter@jackson.com>mistake";

任何人都可以帮助解决这个问题吗?进阶谢谢。

PS:我知道如何用字符分割字符串。所以它不会有帮助。我需要一个正确的正则表达式。

4

3 回答 3

1

我相信您正在寻找的正则表达式如下:

(.*?)[<([{](.*?)[>)\]}]

您需要第 1 组和第 2 组。

于 2013-02-24T02:10:41.343 回答
0
(.*?)[([<{](.*?)[)\]>}]

我认为这应该足够了。

名称将在第一个捕获的组中,电子邮件将在第二个组中。

于 2013-02-24T02:11:32.353 回答
0

似乎(.*)[<\(\[{](.*)[>\)]}]对我有用。

名称和电子邮件地址的组。

http://regexr.com?33sq4是我的测试。

于 2013-02-24T02:11:48.047 回答