正则表达式分割逗号分隔括号,应该很容易

时间:2013-09-06 13:58:27

标签: c# regex string split

对所有人:我有这个字符串:

"{1,2,3},{4},{3}"

我想拆分成这样的数组:

    {1,2,3}
    {4}
    {3}

我使用的模式",\{([^)]*)\},"只是部分工作,并给我一个数组:

    {1,2,3}
    4
    {3}

我这样做:

string[] strs = Regex.Split(string, pattern)

我无法弄清楚我错过了什么,以便第二个值缺少大括号。我一直在撞墙。非常感谢任何帮助。

谢谢!

3 个答案:

答案 0 :(得分:5)

您可以使用以下正则表达式进行拆分:

(?<=\}),(?=\{)

这会匹配前面有,并且后跟}的所有逗号}

RegexHero Demo

答案 1 :(得分:0)

你可以使用拆分并添加你已经推出的削减:

string[] splitted = str.Split("},{");


for(int i = 0; i < splitted.Count ; i++)
{
  if(i != 0)
  {
     Console.WriteLine("{");
  }
  Console.WriteLine(curr[i]);
  if(i != splitted.Count - 1)
  {
      Console.WriteLine("}");
  }
}

答案 2 :(得分:0)

纯正的正则表达式&#34;答案是这样的:

        string str = "{1,2,3},{4},{3}";
        string[] strs =
            Regex.Matches(str, @"({.*?})")
                 .OfType<Match>()
                 .Select(m => m.Groups[0].Value)
                 .ToArray();

更能容忍支撑组之间的不同 - 甚至混合 - 分隔符,例如逗号空间或空格,而不仅仅是逗号。如果您的输入字符串定义明确,那么这不会成为问题,但我更愿意处理可能来自不同来源的输入,并且可能完全符合。