- 与...不匹配(3点)

Fab*_*008 0 powershell

我的PowerShell CSV工具有一个奇怪的问题.我试着写一个小的支票,过滤掉某些名字和字符.这些名称/字符在这样的文本文件中:

XXX
nana
YYY
...
DDD

我做的检查是这样的:

$reader = [System.IO.File]::OpenText($fc_file.Text)
try {
    for() {
        $line = $reader.ReadLine()
        if ($line -eq $null) { break }
        # process the line
        Import-Csv $tempfile -Delimiter $delimeter -Encoding $char |
            where {$_.$fc_suchfeld -notmatch $line} |
            Export-Csv $tempstorage -Delimiter $delimeter -Encoding $char -NoTypeInfo
Run Code Online (Sandbox Code Playgroud)

它工作得很好,直到3点的线.此时几乎所有行都被删除.我怎么解决这个问题?

Ans*_*ers 5

-match运营商确实正则表达式匹配..是正则表达式中的元字符,匹配除换行符之外的任何字符.因此,正则表达式...匹配具有至少3个字符的任何行.如果你想使用来自$fc_file文字字符串匹配的行,你需要转义它们:

... | where {$_.$fc_suchfeld -notmatch [regex]::Escape($line)} | ...
Run Code Online (Sandbox Code Playgroud)

或做一个通配符匹配:

... | where {$_.$fc_suchfeld -notlike "*$line*"} | ...
Run Code Online (Sandbox Code Playgroud)