首页 > 解决方案 > 如何获取位于其他两个字符之间的字符

问题描述

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

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

我想得到这样的输出:

D=2
C=1

如果可能的话,我想把它们放在一个变量中。我在 regex 中查看了一下,发现使用此代码[A-Z]:它与https://regexr.com/中的D:D:和匹配,但我不知道如何实现它或如何获得它所获得的值。C:

标签: regexpowershell

解决方案


您可以获得每个驱动器号的频率列表,如下所示:

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

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

这给出了这样的输出:

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

如果您希望它们采用 format C=1,则只需进行少量更改:

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

产生:

D=2
C=1

推荐阅读