代码之家  ›  专栏  ›  技术社区  ›  SumoStash

powershell筛选器,其中对象和返回完全匹配

  •  0
  • SumoStash  · 技术社区  · 8 年前

    $Array1包含:

    FirstName  LastName   ZipCode                          Race
    
    Alice      Jones      {90011, 90017, 90006}            American Indian, Asian, Hispanic 
    Allen      Rogers     {90025, 90001}                   African American, American
    John       Smith      {90001}                          American
    Bob        Wilson     {90025, 90001, 90055, 90084}     African American, American,...
    Barbara    Hall       {90025}                          White
    

    如果匹配,那么做一些事情。

    我所拥有的是

    foreach ($variable in $Variables) {
        $result=$Array1 | Where {$_.ZipCode -match "$variable$"}
    } 
    

    Allen      Rogers     {90025, 90001}                   African American, American
    John       Smith      {90001}                          American 
    Bob        Wilson     {90025, 90001, 90055, 90084}     African American, American,...
    

    精确匹配

    John       Smith      {90001}                          American 
    

    我试过正则表达式

    $_.ZipCode -match "^$variable$"
    

    但它不起作用。

    2 回复  |  直到 8 年前
        1
  •  1
  •   Maximilian Burszley    8 年前

    -ceq 对于 火柴这也是区分大小写的匹配。 -match / -cmatch

    然而,更好的比较运算符是 -contains

    Where-Object { $_.ZipCode -contains "$variable" }
    

    确保两个比较匹配类型。如果阵列使用 [Int] ,确保您与 对象这可以在PSv3+中进一步简化:

    ? ZipCode -contains $variable
    

    为OP编辑:

    | Where-Object { ($_.ZipCode.Count -eq 1) -and ($_.ZipCode -eq $variable) }
    
        2
  •  0
  •   Klaus Gütter    5 年前

    $_.ZipCode -match "^$variable$" 
    

    $_.ZipCode -match ("^"+$variable+"$") 
    

    这将根据您的需要评估正则表达式。

    推荐文章