2

这似乎是一项简单的任务,但我似乎无法让它发挥作用。我希望能够读取一个文本文件,如果找到两个确切的模式返回 True。如果它只找到一个,则返回 false。

我试过这个,但它不工作:

Get-Content $log_path | Select-String -pattern "\bInstallation of\b|\bfailed\b" -AllMatches -quiet

接下来我可以尝试什么?

4

1 回答 1

2

您的模式包含一个 or|声明,它基本上说。

如果存在一个或另一个(安装或失败),那么它是匹配的。你想要的是使用通配符,这样单词和中间词都是同一匹配的一部分。

Select-String -pattern "\bInstallation .* failed\b"  -quiet

补充笔记

遇到问题时,可以使用在线正则表达式测试器来测试您的正则表达式。

我个人非常喜欢RegexHero,即使您需要 IE,因为它是在 Silverlight 中完成的,因为它有一个针对您的正则表达式的分析部分,可以分解您的表达式并用文字解释您正在做什么。

在学习或仅在处理更复杂的表达式时非常有用。

例如,您的初始正则表达式。 初始表达式

虽然我没有亲自使用它,但 RegexStorm 看起来也很有前途,并且不受 IE 限制。

于 2017-10-04T13:06:00.000 回答