我需要解析出具有以下结构的字符串
x:{a,b,c,},y:{d,e,f}等。
所有条目都是数字,所以看起来像这样
411:{1,2,3},241:{4,1,2}等。
忘记提及:{}之间的逗号分隔条目数没有上限,但必须至少有一个条目。
我需要获取的唯一列表
:前面的数字,在上述情况下
411,241
可以用正则表达式来完成吗?
最佳答案
如果我们将x:{a,b,c}视为一个元素,则以下内容将为您提供具有两个命名grounps的匹配项列表:外部和内部。外层为x,内层为a,b,c。
(?<outer>\d+):\{(?<inner>\d+(,\d+)*)\}
更新资料
这是一个代码示例:
String input = "411:{1,2,3},241:{4,1,2},45:{1},34:{1,34,234}";
String expr = @"(?<outer>\d+):\{(?<inner>\d+(,\d+)*)\}";
MatchCollection matches = Regex.Matches(input, expr);
foreach (Match match in matches)
{
Console.WriteLine("Outer: {0} Inner: {1}", match.Groups["outer"].Value, match.Groups["inner"]);
}
关于c# - 如何解析呢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1631716/