HTML中的2D数组

HTML中的2D数组,html,arrays,csv,powershell,powershell-2.0,Html,Arrays,Csv,Powershell,Powershell 2.0,我的任务是将HTML表转换为2D数组,以便将内容写入CSV文件。我正在考虑创建第二个数组维度的最佳方法。以下是我到目前为止所掌握的(样本数据): $data='Jill Smith 50 Eve Jackson 94' $data=[regex]::匹配($data,“(.+)”) $data=$data[0]。组[1]。值 $arr=@() $arr=[regex]::匹配($data,,(.*))|%{$\.Groups[1].value} 我现在有一个行数组(减去标记)。有没有办法下一步

我的任务是将HTML表转换为2D数组,以便将内容写入CSV文件。我正在考虑创建第二个数组维度的最佳方法。以下是我到目前为止所掌握的(样本数据):

$data='Jill Smith 50 Eve Jackson 94'
$data=[regex]::匹配($data,“(.+)”)
$data=$data[0]。组[1]。值
$arr=@()
$arr=[regex]::匹配($data,,(.*))|%{$\.Groups[1].value}
我现在有一个
行数组(减去
标记)。有没有办法下一步拆分
元素并从这些元素创建一个数组?我也许可以用蛮力来解决这个问题,但我觉得有一种更干净、更理想的方法


顺便说一句,我使用的是PowerShell的v2。

如果您仔细查看目前为止所拥有的内容,您会注意到一种模式:获取一个带有HTML片段的字符串,将其与正则表达式
(.*?
)进行匹配,然后从匹配中提取捕获的组(括号之间的部分)。您可以对
标记和
标记执行此操作。使用相同的方法提取每行的
标记的内容

$arr | ForEach-Object {
  [regex]::matches($_, '<td.*?>(.*?)</td>') | ForEach-Object {
    $_.Groups[1].Value
  }
}
将数组作为一个整体附加,而不是附加每个单独的元素,结果如下:

[ [ 'Jill', 'Smith', 50 ], [ 'Eve', 'Jackson', 94 ] ]
而不是平面阵列:

[ 'Jill', 'Smith', 50, 'Eve', 'Jackson', 94 ]
结果并不完全是一个二维数组(实际上是一个数组数组,而二维数组是一个二维数组)。不过,这是你通常在PowerShell中处理这类事情的方式


为了更好地了解您在这里到底在做什么,您可能需要仔细阅读,并且。

这似乎是缺少的神奇之处。如果有人在这里看到任何明显的错误,我很高兴听到他们<代码>0..($arr.Length-1)|%{$arr[$\]=[regex]::匹配($arr[$\],'(.*))|%{$\.Groups[1].value}
[ [ 'Jill', 'Smith', 50 ], [ 'Eve', 'Jackson', 94 ] ]
[ 'Jill', 'Smith', 50, 'Eve', 'Jackson', 94 ]