我需要解析出具有以下结构的字符串

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/

10-13 00:52