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

时间:2015-03-05 09:12:40

标签: c# regex string split

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

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

我想将这个字符串拆分成两部分,我在捕获括号中获取信息(例如1,Filepath(1,Filepath),但整个字符串也在捕获括号中,如您所见。结果我然后尝试使用string[] array = Regex.Split(originalString,SomeRegexHere)

放入数组

现在我想知道最好的方法是什么,只需删除字符串的第一个和最后一个字符,这样我就不会将捕获括号括起来整个字符串,或者是否有某种方法可以使用正则表达式在这上面得到我想要的结果?

3 个答案:

答案 0 :(得分:4)

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,"]

答案 1 :(得分: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

答案 2 :(得分:0)

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

只是做一个匹配并获取你的内容而不是分裂。参见演示。

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