只保留前 3 个项目

keep only 3 first items

我正在尝试对列表进行排序并仅获取提供 3 个分隔符的元素 示例:

paris/sales/  
paris/sales/14tharrdt/  
paris/sales/14tharrdt/shop1/  
paris/sales/14tharrdt/shop2/  
london/direction/  
london/direction/boss/  
london/direction/boss/secretary/  
london/direction/boss/secretary/official/  
london/direction/boss/CEO/  
new-york/direction/boss/  
new-york/direction/boss/delegation/
london/otherservice/office1/
paris/service1/test/
new-yotk/service1/test/

我只想保留以下项目:

london/otherservice/office1/
paris/service1/test/
new-yotk/service1/test/

只有 3 个分隔符的行,后面没有任何内容

有没有办法用 PowerShell 做到这一点?

就这么简单:

$array |Where-Object { $_.split("/").length -eq 4 }

我同意Gerald Schneider,不需要在这里使用regex。但如果你愿意,这里有一个解决方案:

$array | Where { $_ -match '^(?:[^\/]+\/){3}$' }

正则表达式的解释:

^(?:[^\/]+\/){3}$

Debuggex Demo

Regex101 Demo