4

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

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

我想拆分成这样的数组:

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

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

    {1,2,3}
    4
    {3}

我正在这样做:

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

我无法弄清楚我缺少什么,因此第二个值缺少大括号。我一直在用头撞墙。任何帮助是极大的赞赏。

谢谢!

4

3 回答 3

5

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

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

,这匹配前面}}后面的所有逗号。

RegexHero 演示

于 2013-09-06T14:01:59.790 回答
0

你可以只使用 split 并添加你已经发布的部分:

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("}");
  }
}
于 2013-09-06T14:06:25.003 回答
0

“纯正则表达式”的答案是这样的:

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

这更能容忍括号组之间的不同(甚至是混合)分隔符,例如逗号空格或空格,而不仅仅是逗号。如果您的输入字符串定义明确,那么这将不是问题,但我更喜欢能够处理可能来自不同来源且可能不太符合要求的输入。

于 2014-03-31T23:44:50.030 回答