2017-10-04 35 views
2

这似乎是一个简单的任务,但我似乎无法使其工作。我希望能够读取文本文件,如果找到两个确切的模式,则返回True。如果它只找到一个,那么它返回false。如果在使用powershell的文本中发现两种模式,则返回True

我试过这个,我认为它工作,但没有。

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

我一直在寻找一段时间,并没有发现任何工作。

感谢

回答

2

你的模式包含一个或|声明,基本上说。

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

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

其他注意事项

遇到问题时,有网上正则表达式测试仪,让您测试您的正则表达式。

即使您需要IE浏览器,我个人也很喜欢它,因为它是在Silverlight中完成的,因为它有一个用于正则表达式的分析部分,用于分解您的表达式并用您正在做的事情的文字给出解释。

当学习或处理总是更复杂的epxressions时非常有用。

例如,你的初始正则表达式。 Initial expression

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

+1

'-AllMatches'在这里不相关。 –

+0

非常感谢,那就是问题所在。我在这方面花了太长时间:-)赞赏协助。 –

+0

好点@MartinBrandl。在回答之前我没有看到它的效果。我删除了那部分。 –

相关问题