使用-notmatch与多个过滤器

时间:2014-09-14 14:27:23

标签: powershell

使用搜索来查找答案非常棒,除非您不理解答案中的内容:

所以不允许你要求澄清,所以你必须发布另一个帖子;对那些寻找答案的人来说没有多大帮助IMO。

但是,在与我的问题相关的线程中找到了它,它似乎确实有效。但是,我无法弄清楚两件事:

$items = Get-ChildItem $parentPath -Recurse -Exclude $exclude | ?{ $_.fullname -notmatch "\\obj\\?" }

1:你为什么要使用" \ xxxx \?"和 2:有没有办法让一个数组或事物列表无法匹配?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

-match和-notmatch运算符只接受单个正则表达式参数,但您可以在正则表达式中使用交替来匹配同一操作中的多个条件:

$items = Get-ChildItem $parentPath -Recurse -Exclude $exclude |
 ?{ $_.fullname -notmatch "\\(?:obj|bin)\\?" }

答案 1 :(得分:0)

1)解释:

   \\ litteral character '\'
   \  author missed another '\' to escape
   \? Litteral character ?

或者

  \\ litteral character '\'
   \\ litteral character '\' 
    ? The last character is optional ( wrong because the last char is a special char and must be escaped)

如果您想使用升级\选项

,则模式必须为\\obj\\\? If you want match litteral '?' Or \\obj(?:\\)?