我需要拆分下一个字符串
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");
答案 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)