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