regex - 如何获取位于其他两个字符之间的字符
问题描述
我有一个变量,其中包含我的 PC 的目录。我想计算并获取我将在变量中写入的分区。
$test = "D:\hey,D:\bye,C:\AnotherDirectory"
我想得到这样的输出:
D=2 C=1
如果可能的话,我想把它们放在一个变量中。我在 regex 中查看了一下,发现使用此代码[A-Z]:
它与https://regexr.com/中的D:
、D:
和匹配,但我不知道如何实现它或如何获得它所获得的值。C:
解决方案
您可以获得每个驱动器号的频率列表,如下所示:
$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