dir C:\dev\ve1 -Include *.scala -Recurse |
Select-String -Pattern "ValidSite" -SimpleMatch -CaseSensitive
这个工作正常,但我想要只有整个单词的行,但是它会给ValidSiteId
。
行应包含'ValidSite',不应包含'case'字。
我经历了Select-String
的所有选项,我尝试了多种方法,但没有运气。
答案 0 :(得分:1)
你应该看一下正则表达式:
dir C:\dev\ve1 -Include *.scala -Recurse | Select-String '^(?!.*case).*ValidSite .*$'
^. ... *ValidSite .*$
应该足够明确。第一部分(?!.*case)
是否定前瞻:在匹配字符串之前,它检查字符串不包含" case" (前面有任意数量的字符)。
答案 1 :(得分:1)
匹配字边界(\b
)并将结果通过另一个Select-String
与您的负面条件相关联:
Get-ChildItem C:\dev\ve1 -Include *.scala -Recurse |
Select-String -Pattern "\bValidSite\b" -CaseSensitive |
Select-String -Pattern "\bCase\b" -NotMatch -CaseSensitive