Powershell 选择字符串未找到 ÿ

问题描述

我有一个日志文件,里面有一些坏字符。虽然有很多,但我目前特别感兴趣的是ÿ

当我尝试用它做一个简单的选择字符串时,我根本没有得到任何结果:

select-string -path D:\logs\*.log -Pattern 'ÿ'

我尝试添加编码,但也没有返回任何结果。我尝试了以下所有方法

select-string -path D:\logs\*.log -Pattern 'ÿ' -Encoding "Unicode"
select-string -path D:\logs\*.log -Pattern 'ÿ' -Encoding "UTF8"
select-string -path D:\logs\*.log -Pattern 'ÿ' -Encoding "ASCII"

我错过了什么?

解决方法

尝试使用具有负前瞻的正则表达式。我认为这是最简单的方法,因为我们对文件或字符编码了解不多。

-pattern '^(?!.*[a-zA-Z]|\S\s|^$).*$'

这将搜索任何不是:a thru z 小写字母、A thru Z 大写字母、数字或空格(如空格或换行符)。从理论上讲,它应该捕获您的“ÿ”字符以及可能出现的任何其他怪异字符。如果需要,您可以添加更多内容。 |符号表示“AND”,因此您可以添加“|”在模式中的 $ 之后,并在必要时添加更多字符,如 ^(?!.*[a-zA-Z]|\S\s|^$).*$|\=