C#从MatchCollection创建数组

我需要从这个正则表达式结果创建一个多维数组

MatchCollection match = Regex.Matches(input, @"( +|)[( +|)PC( +|)(( +|)name( +|)=" + ""(.*)"( +|),( +|)ip( +|)=( +|)"(.*)"( +|),( +|)subnet( +|)=( +|)"(.*)"( +|),( +|)gateway( +|)=( +|)"(.*)"" + @")]");

该正则表达式会捕获这个字符串

[PC(name="PC1", ip="192.168.1.2", subnet="255.255.255.0", gateway="192.168.1.1")]

我需要的是创建像这样的多维数组

[0]PC1 -> [0]192.168.1.2, [1]255.255.255.0, [2]192.168.1.1

我可以使用for循环获取matchcollection的每个值,但问题是创建多维数组

我已经谷歌关于二维数组,但没有人工作。 我发现了一个代码,但它不能被字符串使用

        int[][] i = new int[2][];
        i[0] = new int[3] { 1, 2, 3 };
        i[1] = new int[2] { 4, 5 };

我需要2d数组,像这个数组[0] - > PCName - > [0] IP,[1] Subnet,[2] Gateway


我试图从捕获的值中创建一个对象[] []

示例代码

       string input = "[PC(name="PC1", ip="192.168.1.2", subnet="255.255.255.0", gateway="192.168.1.1")]n[PC(name="PC2", ip="192.168.1.3", subnet="255.255.255.0", gateway="192.168.1.1")]";

       MatchCollection matches = Regex.Matches(input, @"name=""(.*?)"".*ip=""(.*?)"".*subnet=""(.*?)"".*gateway=""(.*?)""");

       object[][] values = matches.OfType<Match>()
                           .Select(m => new object[] { m.Groups[1], m.Groups[2], m.Groups[3], m.Groups[4] })
                           .ToArray();

结果

请注意,我也更改了正则表达式来创建组,以便可以在匹配中对这些值进行分组

尝试这里的正则表达式http://regex101.com/r/nM6lK8/2

链接地址: http://www.djcxy.com/p/92831.html

上一篇: C# Create array from MatchCollection

下一篇: Parsing text by regex, split, tokinize, or hash