[英]PowerShell wildcard in the middle of a string
我從文本文件中獲取了一些內容,並將其加載到變量中。
有了數據后,我將遍歷數據的每一行,不包括像這樣添加到我的數組中的一些值。
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]"
我在$data
的$row
中有很多值,它們的時間戳類似於:
[10:49:32] [09:32:57] [06:17:15] [06:17:15]
我可以在方括號之間放置通配符,以便不向數組中添加帶有[方括號]的任何值嗎?
隨時問我是否有不清楚的地方,
謝謝
如果要使用通配符匹配,則需要將使用-ne更改為-notlike。
如果要使用正則表達式,請使用-notmatch。
看到:
Get-Help about_comparison_operators
一個例子:
[Array]$index = $row.Split(" ") -notlike "*`[*`]*" -ne "Value2" -ne "Value3" -ne "Value4" -ne "Value5"
注意:方括號被認為是通配符集的一部分,因此要在字面上匹配方括號,必須使用反引號將其轉義。
嘗試-notmatch "\\[.*\\]"
而不是-ne
我個人會拆分然后過濾,因為它似乎提供了更多的通用過濾功能,我認為:
$Exclusions = @("value1","value2","value3")
gc c:\temp\test.txt |%{$_.split(" ") |?{$_ -notin $exclusions -and $_ -notmatch "\[.*?]" -and !([string]::IsNullOrWhiteSpace($_))}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.