Вернуть True, если два шаблона найдены в тексте с помощью powershell

Это похоже на простую задачу, но я не могу заставить ее работать. Я хочу, чтобы иметь возможность читать текстовый файл, и если найдены два точных шаблона, верните True. Если он находит только один, то он возвращает false.

Я пробовал это, и я думал, что это работает, но его нет.

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

Я искал какое-то время и не нашел ничего, что сработало бы.

благодаря

1 ответ

В вашем шаблоне есть или | который в основном говорит.

Если один или другой (установка или неудача) присутствует, то это соответствует. Вы хотите использовать подстановочный знак, поэтому оба слова и промежуточные части являются частью одного и того же совпадения.

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

Дополнительные замечания

При возникновении проблем есть онлайн-тестер регулярных выражений, который позволяет вам тестировать ваше регулярное выражение.

Мне лично нравится много RegexHero, хотя вам нужен IE, потому что он выполняется в Silverlight, потому что у него есть раздел анализа для вашего регулярного выражения, который разбивает ваше выражение и дает объяснение в словах того, что вы делаете.

Супер полезно при обучении или просто при работе с более сложными эпрессами.

Например, ваше начальное регулярное выражение.

Хотя я лично не использовал его, RegexStorm также выглядит многообещающим и не ограничен IE.

licensed under cc by-sa 3.0 with attribution.