【问题标题】:Return True if two patterns are found in text with Powershell如果使用 Powershell 在文本中找到两种模式,则返回 True
【发布时间】:2018-03-15 21:00:32
【问题描述】:

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

我试过了,但它不起作用:

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

接下来我可以尝试什么?

【问题讨论】:

    标签: powershell boolean match select-string


    【解决方案1】:

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

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

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

    补充说明

    当遇到问题时,有在线正则表达式测试器可以让您测试您的正则表达式。

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

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

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

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

    【讨论】:

    • -AllMatches 与此处无关。
    • 非常感谢,这就是问题所在。我在这方面花了太长时间 :-) 感谢您的帮助。
    • 好点@MartinBrandl。在回答之前我没有查看它的效果。我删除了那部分。
    • @JasonMurray 我添加了一个正则表达式测试人员注释。你应该看看。每当我必须处理正则表达式时,我都会使用其中一种工具来确保它能够适应更复杂的交互和/或解决我的匹配问题。它为我节省了无数小时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2022-01-25
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    相关资源
    最近更新 更多