问题描述
我有一个日志文件,里面有一些坏字符。虽然有很多,但我目前特别感兴趣的是ÿ
当我尝试用它做一个简单的选择字符串时,我根本没有得到任何结果:
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|^$).*$|\=