#powershell #powershell-2.0 #powershell-3.0
#powershell #powershell-2.0 #powershell-3.0
Вопрос:
dir C:devve1 -Include *.scala -Recurse |
Select-String -Pattern "ValidSite" -SimpleMatch -CaseSensitive
Это работает нормально, но я хочу строки, в которых есть только целое слово, но оно выдает ValidSiteId
.
И строка должна содержать ‘ValidSite’ и не должна содержать слово ‘case’.
Я перебрал все варианты Select-String
и перепробовал несколько способов, но безуспешно.
Ответ №1:
Сопоставьте границы слов ( b
) и передайте результат через другое Select-String
с вашим отрицательным условием:
Get-ChildItem C:devve1 -Include *.scala -Recurse |
Select-String -Pattern "bValidSiteb" -CaseSensitive |
Select-String -Pattern "bCaseb" -NotMatch -CaseSensitive
Ответ №2:
Вам следует взглянуть на регулярное выражение :
dir C:devve1 -Include *.scala -Recurse | Select-String '^(?!.*case).*ValidSite .*$'
^. ... *ValidSite .*$
должно быть достаточно понятным. Первая часть (?!.*case)
представляет собой отрицательный прогноз: перед сопоставлением строки проверяется, что строка не содержит «регистр» (с любым количеством символов перед ним).