我从文本文件中获取一些内容并将其加载到变量中。
一旦有了数据,我就会遍历每一行数据,不包括像这样添加到我的数组中的一些值。
foreach($row in $data)
{
if($row)
{
Write-Host $row
[Array]$index = $row.Split(" ") -ne "[needWildCardHere]" -ne "Value2" -ne "Value3" -ne "Value4" -ne "Value5"
}
}
与我给出的每个字符串匹配的每个值都不会添加到数组中。
请注意我的第一个值[Array]$index = $row.Split(" ") -ne "[needWildCardHere]"
我在$row
的{{1}}中有一堆值,其中包含与此类似的时间戳:
[10:49:32] [09:32:57] [06:17:15] [06:17:15]
我可以在括号中放一张外卡,这样我就不会将[括号]的任何值添加到我的数组中吗?
如果有什么不清楚的话,请随时问我,
由于
答案 0 :(得分:4)
如果要使用通配符匹配,则需要使用-ne更改为-notlike。
如果您想使用正则表达式,请使用-notmatch。
见:
Get-Help about_comparison_operators
一个例子:
[Array]$index = $row.Split(" ") -notlike "*`[*`]*" -ne "Value2" -ne "Value3" -ne "Value4" -ne "Value5"
注意:方括号被认为是通配符集的一部分,因此要按字面意思匹配它们,需要使用反引号进行转义。
答案 1 :(得分:2)
尝试使用-notmatch "\[.*\]"
代替-ne
答案 2 :(得分:0)
就个人而言,我会拆分然后过滤,因为它似乎提供了更多功能的过滤我认为:
$Exclusions = @("value1","value2","value3")
gc c:\temp\test.txt |%{$_.split(" ") |?{$_ -notin $exclusions -and $_ -notmatch "\[.*?]" -and !([string]::IsNullOrWhiteSpace($_))}}