匹配各种模式的正则表达式
Regex to match various patterns
我正在尝试创建一个正则表达式来捕获许多可能的字符串,然后将其分配给一个新名称,正则表达式充当过滤器。
我的代码有三个磁盘选项,例如vm01-disk2 or vm01-disk-2 or vm01-disk_2
我创建了一个 If 循环,如下所示
$newname = vm02
elseif ($vhdrename -match 'disk[-_]?2' -or $vhdrename -match 'disk[-_]?-2' -or $vhdrename -match 'disk[-_]?_2') {
$vhdname = "$newname-datadisk02"
}
elseif ($vhdrename -match 'disk[-_]?3' -or $vhdrename -match 'disk[-_]?-3' -or $vhdrename -match 'disk[-_]?_3') {
$vhdname = "$newname-datadisk03"
}
但是,它仅在磁盘名称为 vm01-disk2 且缺少 disk_2 和 disk-2 时有效。
我需要循环访问每个 VM 周围的磁盘和大约 100 个磁盘,因此需要一个自动化解决方案:(
我试过了
elseif ($vhdrename -match 'disk[-_]_?4') {
$vhdname = "$newname-datadisk04"
Write-Host "VM name is"$vhdname -ForegroundColor Yellow
}
elseif ($vhdrename -match 'disk[-_]-4') {
$vhdname = "$newname-datadisk04"
Write-Host "VM name is"$vhdname -ForegroundColor red
}
也转义字符如'disk[-_]\-4'
任何人都可以看到我哪里出错了吗,我确信有一种更简洁、更聪明的方法可以做到这一点,我只是没有看到:)
提前致谢
您可以使字符 class 可选,例如使用捕获组来决定 ForegroundColor 并将数字与 datadisk
连接起来
\bdisk([-_]?)([0-9]+)
\bdisk
匹配 disk
([-_]?)
可选择在组 1 中捕获 -
或 _
([0-9]+)
捕获第 2 组,匹配 1+ 个数字
我正在尝试创建一个正则表达式来捕获许多可能的字符串,然后将其分配给一个新名称,正则表达式充当过滤器。
我的代码有三个磁盘选项,例如vm01-disk2 or vm01-disk-2 or vm01-disk_2
我创建了一个 If 循环,如下所示
$newname = vm02
elseif ($vhdrename -match 'disk[-_]?2' -or $vhdrename -match 'disk[-_]?-2' -or $vhdrename -match 'disk[-_]?_2') {
$vhdname = "$newname-datadisk02"
}
elseif ($vhdrename -match 'disk[-_]?3' -or $vhdrename -match 'disk[-_]?-3' -or $vhdrename -match 'disk[-_]?_3') {
$vhdname = "$newname-datadisk03"
}
但是,它仅在磁盘名称为 vm01-disk2 且缺少 disk_2 和 disk-2 时有效。
我需要循环访问每个 VM 周围的磁盘和大约 100 个磁盘,因此需要一个自动化解决方案:(
我试过了
elseif ($vhdrename -match 'disk[-_]_?4') {
$vhdname = "$newname-datadisk04"
Write-Host "VM name is"$vhdname -ForegroundColor Yellow
}
elseif ($vhdrename -match 'disk[-_]-4') {
$vhdname = "$newname-datadisk04"
Write-Host "VM name is"$vhdname -ForegroundColor red
}
也转义字符如'disk[-_]\-4'
任何人都可以看到我哪里出错了吗,我确信有一种更简洁、更聪明的方法可以做到这一点,我只是没有看到:)
提前致谢
您可以使字符 class 可选,例如使用捕获组来决定 ForegroundColor 并将数字与 datadisk
\bdisk([-_]?)([0-9]+)
\bdisk
匹配disk
([-_]?)
可选择在组 1 中捕获 ([0-9]+)
捕获第 2 组,匹配 1+ 个数字
-
或 _