查找字符串中的所有子字符串

时间:2013-12-09 09:24:58

标签: c# regex

大家好我有这样的字符串:

example(string1,string2,string3)

我需要提取所有参数。我使用了这个正则表达式^(.*?\(),但它只检查括号中的文本。 结果我预计会有:

string1
string2
string3

3 个答案:

答案 0 :(得分:2)

如果您只有一对牙套,则可以通过以下Regex.Match()方法直接获取:

string str = "example(string1,string2,string3) and test(string4)"
string[] params = Regex.Match(str, @"\(([^)]*)\)").Groups[1].Value.Split(',');

但是,如果您有多个带有多个大括号的参数,那么您需要先使用MatchCollection方法获取Regex.Matches(),然后在循环中迭代它以获取如下所有参数:

string str = "example(string1,string2,string3) and test(string4)"
List<string> params = new List<string>();
MatchCollection collection = Regex.Matches(str, @"\(([^)]*)\)");

for (int i = 0; i < collection.Count; i++)
{
   params.AddRange(collection[i].Groups[1].Value.Split(',').ToList());
}

答案 1 :(得分:1)

试试这个..

string[] result = str.TrimStart(@"example(").TrimEnd(@")").Split(",");

结果数组将是

string1
string2
string3

答案 2 :(得分:1)

您可以使用以下正则表达式:

\((?:(?<param>[\w\d]+)[,\s]*)+\)

结果:

Regex result

所以你有参数作为第一组的捕获(名为param)。