Select-String of Invalid Character(德语)

时间:2017-10-20 08:49:16

标签: regex powershell

我希望捕获.csv文件中的无效字符。目前我只能抓住所有不是英文的无效字符,无论如何都要抓住除英文和英文之外的所有无效字符。的德国

以下代码可以过滤非英文字母的无效字符。

$path = "product.csv"

$a = Get-Content $path | Select-String -AllMatches -Pattern "[^\x00-\x79]" | Select-Object LineNumber,Line,@{Name='String';Expression={$_.Matches.Value}}
$b = $a.count

$a
Write-Host "Total:  $b"

包含在人名中的所有德国字符都被计为有效字符。

1 个答案:

答案 0 :(得分:1)

最简单的方法是将德语特定字符的十六进制文字添加到匹配组。您正在寻找的角色是:

 ß \xdf
 Ü \xdc
 ü \xfc
 Ä \xc4
 ä \xe4
 Ö \xd6
 ö \xf6

所以你的新比赛组将是:

-Pattern "[^\x00-\x79\xdf\xdc\xfc\xc4\xe4\xd6\xf6]"

修改

作为通过代码点匹配字符的替代方法,您还可以使用匹配模式中的实际字符:

-Pattern "[^a-zA-ZäÄöÖüÜß]"

它更容易阅读,也不包括您在上面匹配的\x00\x21之间的所有这些非人类可读的控制字符。