簡體   English   中英

字符串中間的PowerShell通配符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM