8

我以前从未使用过正则表达式。我很高兴在论坛中看到类似的问题,但不完全是我想要的

我有一个如下字符串。需要获取大括号之间的值

例如:“{name}{name@gmail.com}”

我需要得到以下拆分的字符串。

姓名和姓名@gmail.com

我尝试了以下方法,它给了我相同的字符串。

string s = "{name}{name@gmail.com}";
string pattern = "({})";
string[] result = Regex.Split(s, pattern);
4

3 回答 3

36

使用MatchesRegex不是Split轻松完成此任务:

string input = "{name}{name@gmail.com}";
var regex = new Regex("{(.*?)}");
var matches = regex.Matches(input);
foreach (Match match in matches) //you can loop through your matches like this
{
  var valueWithoutBrackets = match.Groups[1].Value; // name, name@gmail.com
  var valueWithBrackets = match.Value; // {name}, {name@gmail.com}
}
于 2013-06-29T11:29:36.463 回答
16

必须使用正则表达式吗?在这个特定的例子中,我会写:

s.Split(new char[] { '{', '}' }, StringSplitOptions.RemoveEmptyEntries)
于 2013-06-29T11:24:16.260 回答
0

干得好

string s = "{name}{name@gmail.com}";
s = s.Substring(1, s.Length - 2);// remove first and last characters
string pattern = "}{";// split pattern "}{"
string[] result = Regex.Split(s, pattern);

或者

string s = "{name}{name@gmail.com}";
s = s.TrimStart('{');
s = s.TrimEnd('}');
string pattern = "}{";
string[] result = Regex.Split(s, pattern);
于 2013-06-29T11:01:56.097 回答