如何只搜索整个单词而不应该存在?

How can search whole word only and should not exist?

dir C:\dev\ve1 -Include *.scala -Recurse |
  Select-String -Pattern "ValidSite" -SimpleMatch -CaseSensitive

这工作正常,但我想要只有 整个单词的行 但它给出 ValidSiteId.

并且 行应该包含 'ValidSite' 而不应包含 'case' 字.

我遍历了 Select-String 的所有选项,并尝试了多种方法,但没有成功。

你应该看看正则表达式:

dir C:\dev\ve1 -Include *.scala -Recurse | Select-String '^(?!.*case).*ValidSite .*$'

^. ... *ValidSite .*$应该说的很清楚了。第一部分 (?!.*case) 是一个否定的前瞻:在匹配字符串之前,它检查字符串不包含 "case"(前面有任意数量的字符)。

匹配单词边界 (\b) 并将结果通过另一个 Select-String 与您的否定条件相匹配:

Get-ChildItem C:\dev\ve1 -Include *.scala -Recurse |
  Select-String -Pattern "\bValidSite\b" -CaseSensitive |
  Select-String -Pattern "\bCase\b" -NotMatch -CaseSensitive