我正在尝试创建一个正则表达式来捕获许多可能的字符串,然后将其分配给一个新名称,该正则表达式充当过滤器。
我的代码为磁盘提供了三个选项,例如 code
我已经创建了一个 If 循环,如下所示
SELECT * FROM `cars` WHERE (`status` != 2) AND (`code` = 'FALSE')
但是,它仅在磁盘名称为 vm01-disk2 且缺少 disk_2 和 disk-2 时才有效。
每个虚拟机周围有大约 100 个磁盘需要循环访问,因此需要一个自动化解决方案 :(
我试过了
vm01-disk2 or vm01-disk-2 or vm01-disk_2
还有转义字符,例如 $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"
}
谁能看到我哪里出错了,我确信有一种更简洁、更智能的方法可以做到这一点,我只是没有看到:)
提前致谢
答案 0 :(得分:1)
您可以将字符类设为可选,例如使用捕获组来决定 ForegroundColor 并使用 datadisk
连接数字
\bdisk([-_]?)([0-9]+)
\bdisk
匹配 disk
([-_]?)
可选择捕获第 1 组中的 -
或 _
([0-9]+)
捕获第 2 组,匹配 1 个以上的数字