这似乎是一项简单的任务,但我似乎无法让它发挥作用。我希望能够读取一个文本文件,如果找到两个确切的模式返回 True。如果它只找到一个,则返回 false。
我试过这个,但它不工作:
Get-Content $log_path | Select-String -pattern "\bInstallation of\b|\bfailed\b" -AllMatches -quiet
接下来我可以尝试什么?
这似乎是一项简单的任务,但我似乎无法让它发挥作用。我希望能够读取一个文本文件,如果找到两个确切的模式返回 True。如果它只找到一个,则返回 false。
我试过这个,但它不工作:
Get-Content $log_path | Select-String -pattern "\bInstallation of\b|\bfailed\b" -AllMatches -quiet
接下来我可以尝试什么?
您的模式包含一个 or|
声明,它基本上说。
如果存在一个或另一个(安装或失败),那么它是匹配的。你想要的是使用通配符,这样单词和中间词都是同一匹配的一部分。
Select-String -pattern "\bInstallation .* failed\b" -quiet
补充笔记
遇到问题时,可以使用在线正则表达式测试器来测试您的正则表达式。
我个人非常喜欢RegexHero,即使您需要 IE,因为它是在 Silverlight 中完成的,因为它有一个针对您的正则表达式的分析部分,可以分解您的表达式并用文字解释您正在做什么。
在学习或仅在处理更复杂的表达式时非常有用。
虽然我没有亲自使用它,但 RegexStorm 看起来也很有前途,并且不受 IE 限制。