将字符串拆分为包含在捕获括号中的数组

Split string into array that is enclosed in capturing parentheses

我的项目中有以下字符串:

((1,01/31/2015)(1,Filepath)(1,name)(1,code)(1,String)(1, ))

我想将这个字符串分成几个部分,在这些部分中我可以在捕获括号内获取信息(例如 1,Filepath(1,Filepath),但是整个字符串也在捕获括号中,如您所见. 然后我尝试将结果放入数组 string[] array = Regex.Split(originalString,SomeRegexHere)

现在我想知道最好的方法是什么,只需删除字符串的第一个和最后一个字符,这样我就没有捕获括号包围整个字符串,或者有什么方法可以使用正则表达式在此得到我想要的结果?

(?<=\()[^()]*(?=\))

只需匹配并获取您的内容,而不是 splitting.See 演示。

https://regex101.com/r/eS7gD7/15

string s = "((1,01/31/2015)(1,Filepath)(1,name)(1,code)(1,String)(1,    ))";
var data = s.Split(new string[]{"(", ")"}, StringSplitOptions.RemoveEmptyEntries)

你的数据将是

["1,01/31/2015",
 "1,Filepath", 
 "1,name", 
 "1,code", 
 "1,String", 
 "1,"]

您可以创建一个没有前 2 个和后 2 个括号的子字符串,然后将其拆分到封闭的括号中

    var s = "((1,01/31/2015)(1,Filepath)(1,name)(1,code)(1,String)(1, ))";

    var result = s.Substring(2, s.Length - 4)
                  .Split(new string[]{")("}, StringSplitOptions.RemoveEmptyEntries);

    foreach(var r in result)
        Console.WriteLine(r);

输出

1,01/31/2015
1,Filepath
1,name
1,code
1,String
1, 

Example