如何获得介于其他两个字符之间的字符

时间:2019-04-29 09:13:54

标签: regex powershell

我有一个变量,其中包含我的PC的目录。我想计算并获得将在变量内写入的分区。

$test = "D:\hey,D:\bye,C:\AnotherDirectory"

我想要这样的输出:

D=2
C=1

如果可能的话,我想将它们放在一个变量中。 我看了一下正则表达式,发现使用此代码[A-Z]:https://regexr.com/中的D:D:C:匹配,但是我没有想出如何实现它或如何获得它获得的价值。

1 个答案:

答案 0 :(得分:3)

您可以像这样获得每个驱动器号的频率列表:

$test = "D:\hey,D:\bye,C:\AnotherDirectory"

[Regex]::matches($test.Split(','), "[a-zA-Z](?=:)") | 
    Group-Object Value -NoElement

哪个给出这样的输出:

Count Name                     
----- ----                     
    2 D                        
    1 C

如果您希望它们采用C=1格式,则只需进行很小的更改:

[Regex]::matches($test.Split(','), "[a-zA-Z](?=:)") | 
    Group-Object Value -NoElement |
        ForEach-Object {
            "$($_.Name)=$($_.Count)"
        }

哪个会产生:

D=2
C=1