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