我一直在尝试替换数组中的值,我目前正在尝试清理一些值。我试图通过使用数组删除表标签,或者有更好的方法来做正则表达式?任何帮助,将不胜感激!感谢。
$array = [regex]::matches($lines, "<td>(.*?)</td>")
for($x = 0; $x -le $max; $x++){
$array[$x] = $array[$x].value -replace "<td>", ""
}
不幸的是,我不断收到以下错误:
[ : Unable to index into an object of type System.Text.RegularExpressions.MatchCollection.
答案 0 :(得分:3)
$array = $lines -replace '<td>(.*?)</td>','$1'
答案 1 :(得分:1)
$array = $lines | ? {$_ -match "<td>(.*?)</td>"} | % {$_.Replace("<td>", "").Replace("</td>", "") }
如果您只想替换,而不是仅省略第二次替换。
更好的是,如果你想要同时替换它们:
$array = $lines | ? {$_ -match "<td>(.*?)</td>"} | % {$_ -replace "</?td>", ""}
在回答您的意见时,这可能会更好:
$array = [regex]::matches($lines, "<td>(.*?)</td>") | Select -exp Value | % {$_ -replace "<td>(.*?)</td>", '$1'}
我怀疑有更好的方法可以做到这一点,因为应用正则表达式两次似乎效率低下,但我认为它应该可行。
好的,我想我已经明白了。试试这个:
$array = [regex]::matches($lines, "<td>(.*?)</td>") | % {$_.Result('$1')}