如何在c#中使用正则表达式查找某些字符之间的字符串

时间:2013-02-24 02:00:34

标签: c# regex

美好的一天〜 我并不擅长这个正则表达式。 所以我需要你的帮助。

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

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

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

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

然而,人们总是犯下如下的错误。

他们也可以使用“[”而不是“&lt;”。 所以...

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

即使是一些愚蠢的用户也可以输入......

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

所以,我不得不寻找“&lt;”,“(”,“[”和“{”)字符。 我试过了

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

但我认为我做错了什么。 我也试着认为人们可以输入更多的错误......

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

有人可以帮助解决这个问题吗? 高级谢谢。

PS:我知道如何用字符分割字符串。所以它无济于事。我需要一个正确的正则表达式。

3 个答案:

答案 0 :(得分:1)

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

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

您需要第1组和第2组。

答案 1 :(得分:0)

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

我认为这应该足够了。

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

答案 2 :(得分:0)

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

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

http://regexr.com?33sq4是我的考验。