正则表达式匹配各种模式

时间:2021-07-02 22:50:57

标签: regex powershell azure-powershell

我正在尝试创建一个正则表达式来捕获许多可能的字符串,然后将其分配给一个新名称,该正则表达式充当过滤器。

我的代码为磁盘提供了三个选项,例如 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" }

谁能看到我哪里出错了,我确信有一种更简洁、更智能的方法可以做到这一点,我只是没有看到:)

提前致谢

1 个答案:

答案 0 :(得分:1)

您可以将字符类设为可选,例如使用捕获组来决定 ForegroundColor 并使用 datadisk 连接数字

\bdisk([-_]?)([0-9]+)
  • \bdisk 匹配 disk
  • ([-_]?) 可选择捕获第 1 组中的 -_
  • ([0-9]+) 捕获第 2 组,匹配 1 个以上的数字

Regex demo

相关问题