用一些逗号分隔符

时间:2016-07-22 07:51:21

标签: c# regex

我需要拆分下一个字符串

value1,value2[2,5],value3[4,7],value4,value5[7,4]

拆分后我应该有下一个数组:

value1
value2[2,5]
value3[4,7]
value4
value5[7,4]

我不能用逗号分割,我也不想复杂的逻辑。 我想有最简单的逻辑。

感谢您的帮助。

编辑: 我的尝试:

  var parts = Regex.Split(line, "/([^,]+\\[[^,\\]]*\\,[^,\\]]*\\])|([^,]+)|(,,)/g");

3 个答案:

答案 0 :(得分:5)

您可以分为,(?!\d+])

string st = @"value1,value2[21,5],value3[4,7],value4,value5[7,4]";
var output = Regex.Split(st, @",(?!\d+])").ToList();

将输出:

value1
value2[2,5]
value3[4,7]
value4
value5[7,4]

答案 1 :(得分:1)

试试这个:

string input = "value1,value2[2,5],value3[4,7],value4,value5[7,4]";
string pattern = @"(?'value'\w+\d+),?|(?'value'\w+\d+\[\d+,\d+\]),?";
MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
    Console.WriteLine(match.Groups["value"].Value);
}

答案 2 :(得分:1)

在我看来,分裂这里是错误的方法,如果你要匹配你正在搜索的项目而不是分裂逗号,那么理解和维护会更容易。因此你可以:

IEnumerable<string> values = 
    Regex.Matches(input, @"\w+\d+(\[\d+,\d+\])?").Cast<Match>().Select(m => m.Value)