C# 获取大括号c之间的值#

C# 获取大括号c之间的值#,c#,regex,string,c#-4.0,string-split,C#,Regex,String,C# 4.0,String Split,我以前从未用过正则表达式。我很高兴在论坛上看到类似的问题,但并不是我想要的 我有一根像下面这样的线。需要获取大括号之间的值 例如:“{name}{name@gmail.com}" 我需要得到以下拆分的字符串 姓名及name@gmail.com 我尝试了下面的方法,它返回了相同的字符串 string s = "{name}{name@gmail.com}"; string pattern = "({})"; string[] result = Regex.Split(s, pattern); 给

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

我有一根像下面这样的线。需要获取大括号之间的值

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

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

姓名及name@gmail.com

我尝试了下面的方法,它返回了相同的字符串

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

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);


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

s.Split(new char[] { '{', '}' }, StringSplitOptions.RemoveEmptyEntries)

使用
正则表达式的
匹配
,而不是
拆分
来轻松完成此操作:

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}
}

它是有效的,但是有没有办法只使用正则表达式模式而不使用子字符串来获得这个结果?我想知道是否有办法只使用正则表达式模式而不进行任何其他字符串操作来获得结果?@Coder是的,看看我的答案。;)这是创建regex模式/学习regex@FabianBigler的一个很好的工具,我觉得regex可以轻松实现这一点,所以我在标题中包括了regex:)。我现在已经更改了标题;)建议的解决方案是否也会将
string s=“}name”这样的字符串视为正确的字符串{name@gmail.com“< /代码>?我投得太快了……这个解决方案不能提供答案。请考虑输入字符串:{No.} BLabLA {name@gmail.com},数组中也会有“blabla”…有趣的是,我用括号找到了匹配项。为什么?//我的匹配项:{name},{name@gmail.com}@Georg相应地更改了答案。包括一个组来显示带括号或不带括号的值。与其他解决方案的区别在于正则表达式查找匹配项,而其他答案直接拆分字符串。
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}
}