C#Split String不使用regex组的子字符串

时间:2017-02-02 06:56:48

标签: c# regex split

字符串像这样:

Select(GetName(null),GetID(22),1,GetID(),GetData("T",100),true);

我想拆分字符串(函数)。

像这样回来:

String MainFunName = "Select()"
String MainFunName_Parameters="GetName(null),GetID(22),1,GetID(),GetData("T",100),true"
int MainFunName_Parameters1_Count = 6;

GetName(null)
GetID(22)
1
GetID()
GetData("T",100)
true

我试过

_str.Substring(_str.IndexOf("(") + _str.Length).Split(',').Count();

得到7而不是6,GetData(" T",100)被分成两部分

GetData("T"
100)

我想知道如何使用正则表达式组来拆分这个字符串?感谢

1 个答案:

答案 0 :(得分:1)

你可以像这样使用它:

String str = "Select(GetName(null),GetID(22),1,GetID(),GetData(\"T\",100),true)";
Match result = Regex.Match(str, @"^(\w+)\(([\w""]+(\(.*?\))?[\s,]*?)*\)$");

string outerMethodName = result.Groups[1].Value;
List<string> arguments = result.Groups[2].Captures.Cast<Capture>().Select(i => i.Value.TrimEnd(',')).ToList();

Console.WriteLine(outerMethodName);

int argumentLength = arguments.Count;
foreach (string argument in arguments)
{
    Console.WriteLine(argument);
}